我必须编写一个程序,从文件中读取数字列表,然后输出平均值。 如果我的文件包含 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()
这个位有效,但我不知道如何做第二部分。
答案 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()
读取文件本身,它输出文件中所有行的列表。
最后,它打印列表中所有数字的总和除以列表的长度(给出所有数字的平均值)。