Python: TypeError: float() argument must be a string or a numb Python:TypeError:float()参数必须是字符串或数字

2024-04-30 03:48:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要编写一个python脚本来对文本文件中的十进制数求和(一行,一个数)。我写了这个剧本:

s = float()
f = open('/home/ale/file_numbers', 'r').readlines()
N = len(f)-1
for i in range(0,N):
    s += float(f)

但问题在于指令s += float(f)实际上返回的错误是:

TypeError: float() argument must be a string or a number

我不知道如何解决这个问题 有什么建议吗?


Tags: in脚本homeforlen指令rangeopen
2条回答

想想由readlines返回的内容。它不是字符串,而是字符串列表。

您需要以某种方式从文件中选择单个字符串,或者遍历所有行。

s += float(f[0])

这将返回行列表(顾名思义):

open(...).readlines()

但您可以直接遍历行:

s = float()
f = open('/home/ale/file_numbers', 'r')
for line in f:
    s += float(line)

而且,以防万一,如果在打开文件后没有.close()打开,可以使用以下代码:

s = float()
with open('/home/ale/file_numbers') as f:
    for line in f:
        s += float(line)

这是因为:

  • with语句处理自动退出嵌套块后关闭文件的操作
  • 您可以简单地遍历打开的文件,在每次迭代中得到一行(以换行符结尾)
  • open()的默认mode是“r”,因此可以省略它

相关问题 更多 >