2016-05-01 10 views
0

Ich möchte eine Treppe wie Muster mit .format() -Methode drucken. Ich versuchte dies,Format in Python durch variable Länge

for i in range(6, 0, -1): 
    print("{0:>"+str(i)+"}".format("#")) 

Aber es gab mir folgende Fehlermeldung:

ValueError: Single '}' encountered in format string 

Grundsätzlich ist die Idee

 # 
    # 
    # 
    # 
# 
# 

mit Code zu drucken, die ähnlich aussieht,

for i in range(6, 0, -1): 
    print("{0:>i}".format("#")) 
+0

Gerade Klammer um die Zeichenfolge hinzuzufügen aufgebaut ist: 'print (("{0:>" + str (i) +"} ") .format (" # "))' – niemmi

+2

Sie können ihren Wert über format() übergeben: 'print (" {0:> {1}} ". format (" # ", i))' –

+0

@AshwiniChaudhary die # Ist repariert. Wäre es also möglich, es als Parameter in die Zeichenkette zu bekommen? Wie "{#:> {0}}". Format (i) ', was nicht funktioniert. – BlackShift

Antwort

1

C erzeit Ihr Code wie folgt interpretiert:

for i in range(6, 0, -1): 
    print (("{0:>"+str(i))  +  ("}".format("#"))) 

So ist der Format-String besteht aus einem einzigen aufgebaut „}“ und das ist nicht richtig. Sie benötigen die folgenden:

for i in range(6, 0, -1): 
    print(("{0:>"+str(i)+"}").format("#")) 

Arbeiten, wie Sie wollen:

================ RESTART: C:/Users/Desktop/TES.py ================ 
    # 
    # 
    # 
    # 
# 
# 
>>> 
+0

Ja, das ''} '. Format' ist das selbe wie das typische 'some_object.method'. –