在python中按可变长度格式化

问题描述 投票:0回答:2

我想使用 .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("#"))
python string variables printing format
2个回答
17
投票

使用f弦

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

给出输出:

     #
    #
   #
  #
 #
#

或使用格式(而不是连接字符串)

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

给出输出:

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

     #
    #
   #
  #
 #
#

7
投票

目前您的代码解释如下:

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 ================
     #
    #
   #
  #
 #
#
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.