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

calculate the average of numbers in each line of a file

我想编写一个程序,要求用户输入每行包含数字的文件的名称,并打印每行的平均值。文件中的数字以空格分隔。 .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 得到平均值,然后对剩余的行进行计算。我该怎么做?

改编自How to read numbers from file in Python?

如果您可以使用 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(input("File: "))

for i in f.readlines():
    line = list(map(int, i.strip("\n").split()))
    average = sum(line) / len(line)
    print(average)

基本上,第一行获取文件名。

第三行开始一个循环遍历 f.readlines 的 for 循环,它基本上是文件中每一行的列表。

第四行有点乱。 i.strip("\n").split() 删除每一行中的 \n,并将列表拆分为 space,因此您得到 ['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