每月降雨平均程序的逻辑帮助
我正在尝试写一个程序,这个程序会用到嵌套循环来收集数据,并计算多年来的平均降雨量。程序首先会询问用户要输入多少年的数据。外层循环会根据每一年进行一次迭代,而内层循环则会进行十二次迭代,每次代表一个月。在内层循环的每次迭代中,程序会询问用户这个月的降雨量是多少英寸。
在所有的迭代完成后,程序会显示总共有多少个月,降雨的总英寸数,以及整个期间每个月的平均降雨量。
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)
...