如何创建一个文件然后读取它的整数并给出一个平均值?

时间:2013-09-12 13:55:04

标签: python integer average

我必须编写一个程序,从文件中读取数字列表,然后输出平均值。 如果我的文件包含 3 45 83 21 我的节目将输出:38 我知道如何创建文件:

myFile = open('average', 'wt')
myFile.write('3\n')
myFile.write('45\n')
myFile.write('83\n')
myFile.write('21\n')
myFile.close()

这个位有效,但我不知道如何做第二部分。

2 个答案:

答案 0 :(得分:0)

with open('average', 'wt') as myFile:
    myFile.write('3\n')
    myFile.write('45\n')
    myFile.write('83\n')
    myFile.write('21\n')

使用str.split拆分数字字符串,然后转换为int。 Sum所有数字,除以它:

with open('average', 'rt') as myFile:
    numbers = map(int, myFile.read().split())
    print(sum(numbers, 0.0) / len(numbers))

如果文件很大,上面会引起问题(占用太多内存)。在这种情况下,请使用以下(逐行处理):

with open('average', 'rt') as myFile:
    total, n = 0, 0
    for line in myFile:
        total += int(line)
        n += 1
    print(float(total) / n)

答案 1 :(得分:0)

此代码应该可以执行您想要的操作。

numbers = [int(f.strip()) for f in open("average").readlines()]
print(sum(numbers)/float(len(numbers)))

它使用list comprehension来构建文件中所有数字的列表,它使用strip()从行中删除换行符\n,然后使用{{} 1}}将数字转换为整数(此时,数字仍然是一个字符串)。使用int()读取文件本身,它输出文件中所有行的列表。

最后,它打印列表中所有数字的总和除以列表的长度(给出所有数字的平均值)。