每月降雨平均程序的逻辑帮助

0 投票
2 回答
11417 浏览
提问于 2025-04-18 09:38

我正在尝试写一个程序,这个程序会用到嵌套循环来收集数据,并计算多年来的平均降雨量。程序首先会询问用户要输入多少年的数据。外层循环会根据每一年进行一次迭代,而内层循环则会进行十二次迭代,每次代表一个月。在内层循环的每次迭代中,程序会询问用户这个月的降雨量是多少英寸。

在所有的迭代完成后,程序会显示总共有多少个月,降雨的总英寸数,以及整个期间每个月的平均降雨量。

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')

不过,这个程序的逻辑有点问题。它计算平均降雨量时只考虑了最后一年的总降雨量,而不是所有年份的降雨总和。

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

2 个回答

0

你的 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')
0

当你的代码格式正确时,你会发现你做了:

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)
    ...

撰写回答