Python:TypeError:float()参数必须是字符串或数字
我需要编写一个python脚本,用于对文本文件中的十进制数求和(一行,一个数字)。我写了这个剧本: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
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)
并不是说你应该这样遍历一个列表。