Python 计算文件每行中数字的平均值
我想写一个程序,要求用户输入每行中包含数字的文件名,并打印每行的平均值。文件中的数字用空格分隔。 .txt文件如下所示: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循环的开始,我就可以在线路上循环。但是我不知道
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
您可以使用
枚举
将其缩短并删除计数
。这只是一个想法。是的,我想它可以很好地解决您的问题。这回答了您的问题吗?您尝试了什么?