Python 值输出到str.format文件时出错
我想在一个文件中打印10次Python 值输出到str.format文件时出错,python,Python,我想在一个文件中打印10次0.0。但是,以下代码中出现无效语法错误: fl.write(('{:8.2f}\n'*10).format('0.0'*10)) 我该如何解决这个问题?我希望它尽可能简洁,不必显式写入0.0 10次。您会得到一个ValueError,因为您试图将一个字符串格式化为浮点数: ('{:8.2f}\n'*10).format('0.0'*10) f格式化程序需要一个浮点值,而不是像'0.00.00.00.00.00.00.00.0'那样的字符串,这是您生成的 您有一个固
0.0
。但是,以下代码中出现无效语法错误:
fl.write(('{:8.2f}\n'*10).format('0.0'*10))
我该如何解决这个问题?我希望它尽可能简洁,不必显式写入0.0 10次。您会得到一个
ValueError
,因为您试图将一个字符串格式化为浮点数:
('{:8.2f}\n'*10).format('0.0'*10)
f
格式化程序需要一个浮点值,而不是像'0.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()
方法
演示:
您是对的,我得到了这个错误:str类型的对象的未知格式代码“f”。似乎我不能在格式部分使用“0.0”*10?这是因为您试图格式化字符串,而不是预期的浮点。@user308827:no。
[0.0]
创建了一个列表<代码>[0.0]*10扩展该列表以包含10倍的值*listobject
将列表中的所有元素作为单独的参数应用。完美,ty。我会在几分钟内接受你的回答,stackoverflow要求我再等4分钟
>>> 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