Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:TypeError:float()参数必须是字符串或数字_Python_File - Fatal编程技术网

Python:TypeError:float()参数必须是字符串或数字

Python:TypeError:float()参数必须是字符串或数字,python,file,Python,File,我需要编写一个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 numb

我需要编写一个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
我想不出如何解决这样的问题
有什么建议吗?

想想
readlines
返回了什么。它不是一个字符串,而是一个字符串列表

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

s += float(f[0])

思考
读线
返回的内容。它不是一个字符串,而是一个字符串列表

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

s += float(f[0])

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

但您可以直接遍历行:

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
    ”,因此您可以忽略它

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

但您可以直接遍历行:

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
    ”,因此您可以忽略它

    • 不需要剥离
      \n
      float()
      会处理好的。@AshwiniChaudhary:好的,没注意到。谢谢。不需要剥离
      \n
      float()
      会处理好的。@AshwiniChaudhary:好的,错过了。谢谢。除了其他人已经回答的问题外,您的代码中还有另一个(逻辑)错误:
      范围(a,b)
      返回从a到b的数字。所以
      N=len(f)-1
      应该是
      N=len(f)
      并不是说你应该这样遍历一个列表。除了其他人已经回答的问题外,你的代码中还有另一个(逻辑)错误:
      范围(a,b)
      返回从a到b的数字。所以
      N=len(f)-1
      应该是
      N=len(f)
      并不是说你应该这样遍历一个列表。