2016-02-11 2 views
1

Это код, который у меня есть до сих пор, с правильным отступом, но я не знаю, как это сделать здесь. Я пытаюсь напечатать месяц с максимальным и минимальным количеством осадков, но пока я печатаю только индекс максимального/минимального дождя. Например. Я пытаюсь напечатать: 'Highest rainfall: 45 mm in January' и 'Lowest rainfall: 12 mm in March'. Но пока я печатаю только 'Highest rainfall: 2 (index of max in rain)', а не месяц.Распечатать индекс позиции списка, из индекса другого списка

def main(): 
    rains = [] 
    months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 
    for month in range(12): 
     rain = eval(input('Enter the amount of rain for ' + months[month] + ': ')) 
     rains.append(rain) 
    total = sum(rains) 
    average = (total/len(rains)) 
    print() 
    print('The Rain Amounts:') 
    print(rains) 
    print() 
    print('Total Rainfall:', (round(total,2)), 'mm.') 
    print('Average Rainfall:', (round(average,2)),'mm.') 
    print('Highest rainfall:', rains.index(max(rains)), 'mm in', months.index(rains.index(max(rains)))) 
    print('Lowest rainfall:', rains.index(min(rains)), 'mm in', months.index(rains.index(min(rains)))) 

main() 
+0

Весь код должен иметь отступы 4 пробела (помимо любого отступа, который обычно имеет линия), чтобы получить обработку как «кодовый блок». –

+0

Лучше использовать 'int (input())' intead 'eval (input())'. –

ответ

0

Как это:

import operator 

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 
rains = [12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 2, 1] 

index, value = max(enumerate(rains), key=lambda p: p[1]) 
print "Month with max rain: " + months[index] 
index, value = min(enumerate(rains), key=lambda p: p[1]) 
print "Month with min rain: " + months[index] 

Выход:

Month with max rain: January 
Month with min rain: December 

Live demo.

0
max_rain = max(rains) 
max_rain_months = [months[i] for i,amt in enumerate(rains) if amt == max_rain] 
print("Highest rainfall:", max_rain, "mm in", ', '.join(max_rain_months)) 

похоже на min.

Смежные вопросы