【问题标题】:Comparing two lists to find the average比较两个列表以找到平均值
【发布时间】:2012-11-13 02:36:41
【问题描述】:

该列表应包含所有 1 月和所有 2 月的平均利润等; 我认为你可以这样做的方法是与列表进行比较,例如第 1 年的列表对于 1 月、2 月、3 月、...、12 月具有价值,从那里我可以找到基于年份的平均利润,这没有'没有工作,我不知道从这里去哪里。有什么建议吗?

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

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您的问题很可能是应该将for i in range(0, years) 更改为for i in range(0, years)。您可以在几个月内正确地做到这一点,但在几年内正确地做到这一点同样重要。

    【讨论】:

    • 好像这两件事是一样的..?
    【解决方案2】:

    在我看来,更好的数据结构可以帮助解决这个问题。很难说你最好的选择是什么,但一个建议可能是使用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 模块。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多