我想在文件中打印0.0
10次。但是,我在下面的代码中得到了无效的语法错误:
fl.write(('{:8.2f}\n'*10).format('0.0'*10))
我该如何解决这个问题?我确实希望尽可能简洁,不必明确写出0.0次。
答案 0 :(得分:1)
你得到一个ValueError
因为你试图将一个字符串格式化为浮点数:
('{:8.2f}\n'*10).format('0.0'*10)
f
格式化程序需要一个浮点值,而不是像'0.00.00.00.00.00.00.00.00.00.0'
这样的字符串,这就是你生成的。
不是格式化只使用字符串文字,而是具有固定值:
fl.write(' 0.00\n' * 10)
或至少产生10个浮点数:
fl.write(('{:8.2f}\n'*10).format(*([0.0] * 10)))
此处*([0.0] * 10)
生成一个列表对象,其中包含对浮点值0.0
的十个引用,然后将该列表作为单独的参数应用于str.format()
方法。
演示:
>>> import sys
>>> fl = sys.stdout
>>> fl.write(' 0.00\n' * 10)
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
90
>>> fl.write(('{:8.2f}\n'*10).format(*([0.0] * 10)))
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
90