Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算文件中数字的平均值_Python_File_Average - Fatal编程技术网

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)))