Python 如何修复此错误?

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函数的文本文件中获取平均值。我正在尝试将列表从文本文件转换为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')
        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
的赋值不应该在循环之后吗?是的。格式错误。谢谢你指出这一点。