计算文件每一行中数字的平均值
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
我想编写一个程序,要求用户输入每行包含数字的文件的名称,并打印每行的平均值。文件中的数字以空格分隔。 .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