saim naveed
saim naveed

Reputation: 1

TypeError: 'int' object is not iterable when calculating mean

I am trying to read different values from a file and to store them in a list. After that, I need to take their mean and in doing so I am getting the error above. Code is working up to to line

"Avg_Humidity.append(words[8])"

Here it is:

def monthly_report(path,year,month):
    pre_script="Murree_weather"
    format='.txt'
    file_name = pre_script + year + month+format
    name_path=os.path.join(path,file_name)
    file = open(name_path, 'r')
    data = file.readlines()
    Max_Temp = []
    Min_Temp = []
    Avg_Humidity = []
    for line in data:
        words = line.split(",")
        Max_Temp.append(words[1])
        Min_Temp.append(words[3])
        Avg_Humidity.append(words[8])
    Count_H, Count_Max_Temp, Count_Min_Temp, Mean_Max_Temp, Mean_Min_Temp, 
    Mean_Avg_Humidity=0
    for iterate in range(1,len(Max_Temp)):
        Mean_Max_Temp= Mean_Max_Temp+Max_Temp(iterate)
        Count_Max_Temp=Count_Max_Temp+1
    Mean_Max_Temp=Mean_Max_Temp/Count_Max_Temp
    for iterate in range(1,len(Min_Temp)):
        Mean_Min_Temp= Mean_Min_Temp+Min_Temp(iterate)
        Count_Min_Temp=Count_Min_Temp+1
    Mean_Min_Temp=Mean_Min_Temp/Count_Min_Temp
    for iterate in range(1,len(Avg_Humidity)):
        Mean_Avg_Humidity= Mean_Avg_Humidity+Avg_Humidity(iterate)
        Count_H=Count_H+1
        Mean_Avg_Humidity=Mean_Avg_Humidity/Count_H
    print("Mean Average Humidity = ",Mean_Avg_Humidity)
    print("Mean Maximum Temperature = ",Mean_Max_Temp)
    print("Mean Minimum Temperature = ",Mean_Min_Temp)
    return      

Upvotes: 0

Views: 66

Answers (1)

ottomeister
ottomeister

Reputation: 5808

This line is incorrect:

    Count_H, Count_Max_Temp, Count_Min_Temp, Mean_Max_Temp, Mean_Min_Temp, Mean_Avg_Humidity = 0

To fix, change it to:

    Count_H = Count_Max_Temp = Count_Min_Temp = Mean_Max_Temp = Mean_Min_Temp = Mean_Avg_Humidity = 0

An alternative fix would be to leave the commas as they are and change the right-hand side to a list or tuple of zeroes that has the same number of elements as the left-hand side. But that would be less clear, and harder to maintain.

Upvotes: 1

Related Questions