Python 计算文件中数字的平均值
所以我要做的是找出如何向用户请求一个文本文件并输出所有数字的平均值。通过修修补补,我找到了如何找到我制作的列表的平均值,但不确定如何制作用户给我的列表。这就是我现在拥有的:Python 计算文件中数字的平均值,python,file,average,Python,File,Average,所以我要做的是找出如何向用户请求一个文本文件并输出所有数字的平均值。通过修修补补,我找到了如何找到我制作的列表的平均值,但不确定如何制作用户给我的列表。这就是我现在拥有的: with open('average', 'wt') as myFile: myFile.write('3\n') myFile.write('45\n') myFile.write('83\n') myFile.write('21\n') with open('average', 'rt'
with open('average', 'wt') as myFile:
myFile.write('3\n')
myFile.write('45\n')
myFile.write('83\n')
myFile.write('21\n')
with open('average', 'rt') as myFile:
total, n = 0, 0
for line in myFile:
total += int(line)
n += 1
print(float(total) / n)
像这样的
import string
fileName = raw_input("What file name: ")
lines = []
try:
file = open(fileName)
lines = file.readlines()
file.close()
except:
print "Unable to open file"
sum = 0
values = 0
if(len(lines) > 0):
for line in lines:
value = 0
try:
value = int(string.strip(line))
except ValueError:
pass
if(value != 0):
sum = sum + value
values += 1
print "Average = %f for %d lines, sum = %f"%(sum/values,values,sum)
else:
print "No lines in the file"
注:假设每行一个数字。它不会计算空白行或包含文本的行。除此之外,行上的垃圾或坏文件不应导致异常等
这是测试文件(有空行):
以及输出:
What file name: numbers.txt
Average = 25.000000 for 7 lines, sum = 178.000000
假设文件的每一行上都有一个数字:
with open(input('Filename: '), 'r') as f:
numbers = [int(a.strip()) for a in f]
print('Average is {}'.format(sum(numbers)/len(numbers)))
为什么你认为这对用户的文件不起作用。它是一种不同的格式吗?如果您不知道如何获取用户输入,请检查该函数。然后关闭文件(或使用
with
),将If(len(lines)>0)
替换为If lines
,等等。每个注释清理一点。我将把处理文件异常作为练习留给读者。
with open(input('Filename: '), 'r') as f:
numbers = [int(a.strip()) for a in f]
print('Average is {}'.format(sum(numbers)/len(numbers)))