Python 值输出到str.format文件时出错

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'那样的字符串,这是您生成的 您有一个固

我想在一个文件中打印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'
那样的字符串,这是您生成的

您有一个固定的值,而不是使用字符串文字进行格式化:

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