2012-11-13 90 views
0

該列表應該包含所有januaries和所有februaries等的平均利潤; 我認爲你可以做到這一點的方式是與名單進行比較,比如第一年的名單對janurary,feb,march,...,十二月有價值,從那裏我可以找到基於年份的平均利潤,This一直沒有工作,我不知道該從哪裏出發。有什麼建議麼?比較兩個列表以找到平均值

MONTHS = 12 
def average_profit(years): 
    assert years >= 0, "Years cannot be negative" 
    total = 0.0 
    monthly_average = 0.0 
    total_months = years * MONTHS 
    total_list = [] 
    average_list=[] 
    percentage_list = [] 
    for i in range(0, years): 
     yearly_total = 0.0 
     for j in range(1, 13): 
      monthly_profit = float(input("Please enter the profit made in month {0}: ".format(j)).strip()) 
      monthly_average = monthly_average + monthly_profit 
      month_average = monthly_average/j 
      total_list.append(monthly_profit) 
      average_list.append(month_average) 
      yearly_total = yearly_total + monthly_profit 
      total_percent = (monthly_profit/12)*100 
      percentage_list.append(total_percent) 
     print("Total this year was ${0:.2f}".format(yearly_total)) 
     total = total + yearly_total 
    average_per_month = total/total_months 
    return total, average_per_month, total_months, total_list, average_list,   percentage_list 

回答

0

你的問題是最有可能的是for i in range(0, years)應改爲for i in range(0, years)。你在幾個月的時間裏做到了這一點,但隨着時間的推移正確地做到這一點同樣重要。

+3

好像兩個東西是一樣的..? –

0

在我看來,一個更好的數據結構可以幫助這個好一點。這很難說,你最好的選擇是什麼,但一個建議可以使用dictdefaultdict更容易):

from collections import defaultdict: 
d = defaultdict(list) 
for i in range(0,years): 
    for month in range(1,13) 
     d[month].append(float(input())) 

#now find the sum for each month: 
for i in range(1,13): 
    print sum(d[i])/len(d[i]) 

當然,我們可以使用,而不是字典的名單,但字典將允許你使用月份名稱而不是數字(這可能會很好 - 我敢打賭,你可以很容易地從calendar模塊獲得他們的名字。)