Python 计算文件每行中数字的平均值

Python 计算文件每行中数字的平均值,python,loops,file,numbers,average,Python,Loops,File,Numbers,Average,我想写一个程序,要求用户输入每行中包含数字的文件名,并打印每行的平均值。文件中的数字用空格分隔。 .txt文件如下所示: 23 55 12 90 42 56 33 11 76 34 91 42 45 88 23 90 114 78 117 89 116 64 25 77 33 我可以用 f = open(input("File: ")) for i in f: 有了for循环的开始,我就可以在线路上循环。但是我不知道

我想写一个程序,要求用户输入每行中包含数字的文件名,并打印每行的平均值。文件中的数字用空格分隔。 .txt文件如下所示:

    23 55 12 90 42
    56 33 11 76 34
    91 42 45 88 23
    90 114 78 117 89
    116 64 25 77 33
我可以用

    f = open(input("File: "))
    for i in f:
有了for循环的开始,我就可以在线路上循环。但是我不知道我如何才能只计算第一行,把第一行的数字相加,然后除以5得到平均值,然后对剩下的行进行计算。我该怎么做?

改编自

如果您同意使用Numpy,您可以使用:

with open('file.txt') as f:
    array = [[int(x) for x in line.split()] for line in f]

np.mean(array, axis=1)
使用基本Python

with open(input('File: ')) as f:
    for line_no, line in enumerate(f):                     # enumerate provides data and line number for each line
        numbers = [int(i) for i in line.rstrip().split()]  # convert each line to numbers
        avg = sum(numbers)/len(numbers)                    # using definition of average
        print(f'Avg. of line {line_no} is {avg}')          # print line number and average
        

假设您的文本文件名为“numbers.txt” 您可以使用readLines()函数,如下所示:

file1 = open('numbers.txt', 'r')
Lines = file1.readlines()
count = 0

for line in Lines:
    count = 0
    sum_number = 0
    for i in line.split(' '):
        count += 1
        sum_number += int(i)
    print("avg: {}".format(sum_number / count))
输出将是:

avg: 44.4
avg: 42.0
avg: 57.8
avg: 97.6
avg: 63.0
f=open(输入(“文件:”)
对于f.readlines()中的i:
行=列表(映射(int,i.strip(“\n”).split())
平均值=总和(行)/长度(行)
打印(平均)
基本上,第一行获取文件名

第三行启动一个for循环,循环通过
f.readlines
,它基本上是文件中每一行的列表

第四行有点混乱
i.strip(“\n”).split()
删除每一行中的
\n
,并按空格拆分列表,因此您得到
['23'、'55'、'12'、'90'、'42']
。然后,
list(map(int,
)将列表中的每个值从字符串转换为整数


最后,最后一行得到平均值。
sum(line)
将我们刚刚创建的列表中的每个元素相加。然后,
len(line)
得到列表中的值数。当
sun(line)
除以
len(line)
得到平均值,然后打印出来。

一个可能的解决方案是:

name = input('File: ')

with open(name, 'r') as f:
    lines = f.readlines()

line_nr = 0
for line in lines:
    line_nr += 1
    numbers = line.strip('\n').split(' ')
    sum_numbers = 0
    total_numbers = len(numbers)
    
    for number in numbers:
        int_number = int(number)
        sum_numbers += int_number
        

    

    print(f'The average of line {line_nr} is:', sum_numbers/total_numbers)
输出:

The average of line 1 is: 44.4
The average of line 2 is: 42.0
The average of line 3 is: 57.8
The average of line 4 is: 97.6
The average of line 5 is: 63.0

您可以使用
枚举
将其缩短并删除
计数
。这只是一个想法。是的,我想它可以很好地解决您的问题。这回答了您的问题吗?您尝试了什么?