2014-06-13 2 views
0

Я пытаюсь написать программу, которая использует вложенные циклы для сбора данных и расчета среднего количества осадков в течение нескольких лет. Программа должна задать количество лет. Внешний цикл будет повторяться один раз для каждого года. Внутренний цикл будет повторяться двенадцать раз, один раз для каждого месяца. Каждая итерация внутреннего цикла спросит у пользователя количество дюймов осадков за этот месяц.Логическая помощь по программе среднего месячного дождя

После всех итераций программа должна отображать нумеру месяцев, общее количество осадков и среднее количество осадков в месяц на весь период.

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

Логика для этой программы отключена. Он основывает средний уровень осадков от общего количества осадков в прошлом году, а не всех итогов летних осадков.

Где я ошибаюсь в логике этой программы?

+0

Можете ли вы проверить форматирование кода? Кажется unindented и не уверен, что внутренний цикл завершается. –

+0

Спасибо вам за помощь! – user3030048

ответ

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

Итак, это было размещение «общего» поля. Я бы никогда не получил этого. Спасибо! – user3030048

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') 
Смежные вопросы