-4

Python 文字列の書式設定に関するヘルプが必要
です。次の 2 つのコードがあります。

a = "Hello"
b = False
p = "Python rocks"
q = True

次のようにa、b、p、qを印刷したい:

Hello ................................. False
Python rocks .......................... True

各行 (Hello から False まで) の合計の長さは 70 文字に固定されています。

(編集) 以下が試されていました。明らかに良い方法ではない(そして間違っている)ため、質問

arr = [ ["Hello", False], ["Python rocks", True]]
totallen = 70

for e in arr:
    result = "{0}".format(e[1])
    dottedlen = totallen - len(e[0]) - len(result) - 2
    dottedstr = "." * dottedlen
    str = "".join([e[0], " ", dottedstr, " ", result])
    print str
4

2 に答える 2

1

文字列フォーマットを使用します:

In [48]: def solve(a,b):
    a,b=str(a),str(b)
    spaces=len(a.split())-1
    return "{0} {1} {2}".format(a,"."*(68-len(a)-len(b)-spaces),b)
   ....: 

In [49]: print solve(a,b);print solve(p,q)
Hello .......................................................... False
Python rocks ................................................... True
于 2013-04-24T17:53:51.810 に答える
0

固定文字数までピリオドを追加する関数を作成するだけです。

def formatter(my_string,length,my_boolean):
    my_string += " " + "." * (length - len(my_string))
    print my_string, my_boolean
formatter(a,70,b)
formatter(p,70,q)

注: return の代わりに print を使用する理由は、return を使用してから print すると、このメソッドを使用して次のように出力されるためです。

('Hello .................................................................', False)
('Python rocks ..........................................................', False)

しかし、戻り値がなく、関数から直接印刷するだけで、必要なものが得られます。

Hello ................................................................. False
Python rocks .......................................................... False
于 2013-04-24T17:53:19.597 に答える