python中的格式可变长度

时间:2016-05-01 04:19:34

标签: python string variables printing format

我想使用.format()方法打印类似图案的楼梯。 我试过这个,

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("#"))

2 个答案:

答案 0 :(得分:2)

目前您的代码解释如下:

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 ================
     #
    #
   #
  #
 #
#
>>> 

答案 1 :(得分:1)

简单得多: 代替连接字符串,您可以再次使用格式

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

在空闲状态下尝试:

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

     #
    #
   #
  #
 #
#