问题描述
我需要澄清一下 python 中的以下代码以及 :^38
for leaf in [*range(10)]+[2]:
print(f'{"x"*(leaf*2+1):^38}')
解决方法
第一行:
for leaf in [*range(10)]+[2]:
您创建 [0,1,2...,10,2] 的列表
第二行
print(f'{"x"*(leaf*2+1):^38}')
打印 x (leaf*2+1) 次,旁边有空格,使所有打印的字符串长度为 38
,首先,您想使用反引号 ``` 使您的代码片段可读
for leaf in [*range(10)]+[2]:
print(f'{"x" + str(leaf*2+1):^38}')
然后先说代码中的问题。您的代码迭代两个列表的串联。第一个具有从 0->9 的范围对象,第二个具有数字 2。我使用星星将范围转换为它的元素,所以你有一个从 0->9 和数字 2 的列表。
冒号前的花括号中的部分是要打印的表达式。由于 (leaf*2 + 1) 是一个数字,而 "x" 不是一个函数(我假设)你需要使用 str() 将它变成一个字符串
冒号 c 之后的部分给花括号中的字符串一个 38 的空格,并将其对齐在它的中间。 Alignment in PEP-3101