2016-05-01 3 views
0

Я хочу напечатать лестницу, похожую на шаблон, используя метод .format(). Я попробовал это,Формат в python переменной длиной

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

Но он дал мне следующую ошибку:

ValueError: Single '}' encountered in format string 

В принципе идея заключается в том, чтобы напечатать

 # 
    # 
    # 
    # 
# 
# 

с кодом, который похож на,

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

Просто добавьте скобки вокруг строки строится: 'печать (("{0:>" ул (я +) +"} ") .format (" # "))' – niemmi

+2

Вы можете передать его значение через format(): 'print (" {0:> {1}} ". format (" # ", i))' –

+0

@AshwiniChaudhary # фиксированный. Так можно ли вставить его в строку вместо параметра? Как '' {#:> {0}} ". Format (i)', который не работает. – BlackShift

ответ

1

C urrently код интерпретируется, как показано ниже:

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

Так строка формата строится из одного «}», и это не правильно. Вам потребуется следующее:

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

Работает, как вы хотите:

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

Да, формат ''} '.' совпадает с типичным 'some_object.method'. –

Смежные вопросы