【问题标题】:Logic help on monthly rain average program每月平均降雨量计划的逻辑帮助
【发布时间】:2014-06-13 02:52:18
【问题描述】:

我正在尝试编写一个程序,该程序使用嵌套循环来收集数据并计算几年内的平均降雨量。该程序应询问年数。外循环将每年迭代一次。内部循环将迭代十二次,每个月一次。内部循环的每次迭代都会询问用户该月降雨量的英寸数。

在所有迭代之后,程序应显示月数、总降雨量和整个期间每月的平均降雨量。

years = int(input('How many years do you want to track? '))

months = 12

for years_rain in range(years):

total= 0.0

print('\nYear number', years_rain + 1)
print('------------------------------')
for month in range(months):
    print('How many inches for month ', month + 1, end='')
    rain = int(input(' did it rain? '))
    total += rain


number_months = years * months
average = total / number_months

print('The total inches of rain was ', format(total, '.2f'),'.')  
print('The number of months measured was', number_months)
print('The average rainfall was', format(average, '.2f'), 'inches')

此程序的逻辑已关闭。它是根据去年的总降雨量而不是所有年份的总降雨量计算平均降雨量。

这个程序的逻辑我哪里出错了?

【问题讨论】:

  • 你能检查一下代码的格式吗?似乎没有缩进,不确定内部循环是否终止。
  • 谢谢大家的帮助!

标签: python


【解决方案1】:

使用格式正确的代码,您会发现:

for years_rain in range(years):

    total= 0.0

    print('\nYear number', years_rain + 1)
    ...

哪个重置 total 在您的年循环的每次迭代中归零。改为:

total = 0.0

for years_rain in range(years):  

    print('\nYear number', years_rain + 1)
    ...

【讨论】:

  • 所以这是“总计”字段的位置。我永远不会得到那个。谢谢!
【解决方案2】:

您的total 值正在重置,因此您需要一种方法来跟踪grandTotal。这是执行此操作的一种方法:

years = int(input('How many years do you want to track? '))

months = 12

grandTotal = 0.0 // will store TOTAL rainfall

for years_rain in range(years):

    total= 0.0

    print('\nYear number', years_rain + 1)
    print('------------------------------')
    for month in range(months):
        print('How many inches for month ', month + 1, end='')
        rain = int(input(' did it rain? '))
        total += rain

    grandTotal += total // add total to the grandTotal

number_months = years * months
average = grandTotal / number_months

print('The total inches of rain was ', format(average, '.2f'),'.')  
print('The number of months measured was', number_months)
print('The average rainfall was', format(average, '.2f'), 'inches')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2012-01-07
    • 2021-06-29
    • 2019-04-19
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多