2016-05-01 64 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:>” + STR(I)+“} “).format(”#“))' – niemmi

+2

您可以通过format():'print(”{0:> {1}}“。格式(”#“,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

是的,''}'.format'与典型的'some_object.method'相同。 –