Python 如何修复此错误?
我试图从使用def函数的文本文件中获取平均值。我正在尝试将列表从文本文件转换为int()。不是转换它,而是给我一个错误:“ValueError:invalid literal for int(),以10为底:‘5,5,6,7’”。“5,5,6,7”是我用正确的.txt文件制作的。代码如下:Python 如何修复此错误?,python,integer,valueerror,Python,Integer,Valueerror,我试图从使用def函数的文本文件中获取平均值。我正在尝试将列表从文本文件转换为int()。不是转换它,而是给我一个错误:“ValueError:invalid literal for int(),以10为底:‘5,5,6,7’”。“5,5,6,7”是我用正确的.txt文件制作的。代码如下: def getNumberList(filename): with open(filename,'r') as f: lyst = f.read().split('\n')
def getNumberList(filename):
with open(filename,'r') as f:
lyst = f.read().split('\n')
numberList = [int(num) for num in lyst]
return numberList
def getAverage(filename, func):
numbers = func(filename)
return sum(numbers)/len(numbers)
def main():
filename = input("Input the file name: ")
average = getAverage(filename, getNumberList)
print(average)
if __name__ == "__main__":
main()
您是按行拆分,但不是按逗号拆分,因此您试图将
5,5,6,7
转换为整数,这是不可能的。如果要平均文件中的所有数字,还需要在按行拆分后按逗号拆分,然后将它们合并到一个列表中。以下方面应起作用:
def getNumberList(filename):
with open(filename,'r') as f:
lines = f.readlines()
numberList = [int(num) for num in line.split(',') for line in lines]
return numberList
看起来您可能需要使用lyst使用“,”拆分每个元素,因为现在它正在尝试转换每个以“1,2,3”作为输入的行 所以,改变这个并尝试一下
def getNumberList(filename):
with open(filename,'r') as f:
lyst = []
temp = f.read().strip().split('\n')
for i in temp:
lyst += i.strip().split(',')
numberList = [int(num) for num in lyst]
return numberList
您的文件每行有多个数字。错误很明显,您不能将
'5,5,6,7'
传递给int()
,您需要拆分它。但是您的代码希望它只是一个数字。对numberList
的赋值不应该在循环之后吗?是的。格式错误。谢谢你指出这一点。