从文本文件输入的平均数字

时间:2017-09-26 17:29:10

标签: python file-io

我想在列表中找到数字的平均值。我从.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来解决这个问题。

请帮助任何人帮助我?

1 个答案:

答案 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=' '))