我想在列表中找到数字的平均值。我从.txt文件中获取列表,然后将其放入我的函数中。
def find_mean(list):
sumofnums = sum(list)
avgofnums= sumofnums/len(list)
print(avgofnums)
def get_numbers_from_file(file_name):
file = open(file_name, "r")
strnumbers = file.read().split()
int_strnumbers = [int(i) for i in strnumbers
return (int, int_strnumbers)
mylist = get_numbers_from_file(input("Enter file name"))
print(find_mean(mylist))
但是,我得到操作数类型错误,即它表示文件作为字符串列表返回而不是整数。
Traceback (most recent call last):
File "C:/Users/andrewr/Desktop/Mean_Module.py", line 15, in <module>
print(find_mean(mylist))
File "C:/Users/andrewr/Desktop/Mean_Module.py", line 3, in find_mean
sumofnums = sum(list)
TypeError: unsupported operand type(s) for +: 'int' and 'type'
我以为我通过将strnumber更改为int_strnumbers来解决这个问题。
请帮助任何人帮助我?
答案 0 :(得分:1)
这一行
return (int, int_strnumbers)
应该只是
return int_strnumbers
然而,不是像这样逐行阅读文件,我建议你使用numpy
,这会更快。例如,将文件读入数组将是
numpy.genfromtxt(file_name, delimeter=' ')
然后计算您使用的平均值numpy.average
mean = numpy.average(numpy.genfromtxt(file_name, delimeter=' '))