python - 我的 for 循环正在退出而没有完成列表中的每个数字
问题描述
这是我的代码,我正在访问一个名为pollution.txt 的文件,我试图找到每行中所有数字的平均值然后显示它。
def month_average(monthlist):
monthlist = open("pollution.txt", 'r')
file = monthlist.readlines()
print("The monthly averages are as follows:")
for line in file:
eachline = list(line.split(","))
count = 0
sum_all = 0
average = []
for x in eachline:
number = int(x)
count = count + 1
sum_all = sum_all + number
avg = sum_all / count
average.append(round(avg, 1))
return average
the_average = month_average("pollution.txt")
print(the_average)
这是来自pollution.txt的一小部分
132,142,154,151,143,164,158,150,146,78,141,32,141,142,112,113,116,123,123,119,152,123,127,163,142,85,88,151,142,113,114
89,78,67,65,56,98,123,144,179,86,82,90,172,124,156,187,122,154,144,165,87,152,93,157,134,87,167,98,156,145,133
45,73,167,165,122,148,125,128,75,123,182,144,143,33,122,147,122,178,144,138,87,152,93,57,134,87,67,98
67,54,83,45,56,98,92,121,153,115,98,80,59,63,84,121,144,119,103,97,83,75,56,64,81,99,102,114,116,103,97
解决方案
首先,最好使用“with as”结构来处理 i/o 文件。在我看来,第二个列表理解将更具可读性。
结果,可以重写代码:
def average_by_line(line):
data_array = list(map(int, line.split(",")))
return sum(data_array) / len(data_array)
def month_average(monthlist):
with open("pollution.txt", 'r') as monthlist:
file = monthlist.readlines()
averages = [average_by_line(line) for line in file]
return averages
the_average = month_average("pollution.txt")
print(the_average)
推荐阅读
- django - 在视图 django admin 中未在 POST 请求中获取任何数据
- pandas - 如何从 Pandas 的时间序列中删除重复样本?
- azure-sql-database - 将 Azure SQL 数据库迁移到无服务器的任何问题?
- javascript - 为什么两种情况的输出相同?
- python-3.x - 关于论文“引导随机游走”权重函数实现的问题
- python - tkinter:如何从不同的类访问 StringVar 和对象?
- java - Java中的堆栈和对象无法转换为java.lang.String
- gitlab - GitLab CI 包括一个项目
- python-3.x - 无法删除安全组:调用 DeleteSecurityGroup 操作时发生错误 (DependencyViolation)
- python - 数据集中分类变量之间的相关性