我试图用数字生成一个简单的三角形,输出可能如下所示:
1
22
333
但是,我无法使用嵌套的String格式,我能做到的最好就是以下内容......
for i in range(1, size+1):
line = f'{i}' *i
print(f"{line:>{size}}")
理想情况下,我想要排队'嵌套在print方法中。有什么建议吗?
答案 0 :(得分:2)
您的“嵌套”格式字符串需要格式化两次。您想要第二次保留的任何花括号需要在第一次转义,因此{
变为{{
而}
变为}}
。此外,由于您无法使用f
前缀两次,因此您可以明确调用format
进行第二次格式化。
您正在寻找的是:
for i in range(1, size + 1):
line = f"{i}" * i
print(f"{{0:>{size}}}".format(line))
因此,第一个字符串格式将f"{{0:>{size}}}"
变为{0:>3}
,因此在明确调用format
时,您基本上会获得print("{0:>3}".format(line))
。
答案 1 :(得分:2)
实际上,如果您想要将“线”创建嵌入到 f 字符串本身中,您可以通过以下方式实现:
for i in range(1, size+1):
print(f"{str(i) * i:>{size}}")
或者,如果需要,您也可以在其中使用旧的 % 运算符形成一个字符串。
for i in range(1, size+1):
print(f"{'%s' % (i) * i:>{size}}")