首页 > 解决方案 > 我的 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

标签: python

解决方案


首先,最好使用“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)

推荐阅读