2015-10-04 4 views
0

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


Сколько лет? например 3

Каков первый год? например 2015

Месяц 1: 25

Месяц 2: 21

и так далее ...


за столько лет, сколько пользователь хочет видеть. Это то, что я до сих пор:

years = int(input("How many years?: ")) 

i= 0 

while i <= years: 
    for i in range(0,13): 
      input("Type in first year") 
      input("Month 1: ") 
      input("Month 2: ") 
      input("Month 3: ") 
      input("Month 4: ") 
      input("Month 5: ") 
      input("Month 6: ") 
      input("Month 7: ") 
      input("Month 8: ") 
      input("Month 9: ") 
      input("Month 10: ") 
      input("Month 11: ") 
      input("Month 12: ") 

и такого рода работ, но есть аккуратнее способ сделать месяц номер будет автоматически +1 и задать для ввода в 12 раз? А во-вторых, когда я проделал весь первый год, он все еще спрашивает меня: «Какой первый год» после того, как я набрал температуру в течение 12 месяцев, но я хочу, чтобы он попросил второго, третьего и т. Д. Как: «Какой ? это второй год ")

Я пытался это сделать, как это вместо:


years = int(input("How many years?: ")) 

i= 0 

monthnumber = 1 

while i <= years: 

    for i in range(0,13): 
      input("Which is the first year?: ") 
      input("Month",monthnumber,": ") 
      monthnumber += 1 

Здесь я получаю сообщение об ошибке, что ввод ожидаемый максимум 1 аргумент, получил 3

Thanks заранее)

+0

Одна проблема заключается в том, что вы используете 'i' для обеих циклов. и если у вас есть разные переменные, если это весь ваш код для «циклов», это «бесконечный» цикл – sam

+0

Любое предложение о том, что я могу сделать? Могу ли я, например, написать: if monthnumber == 12 break? –

ответ

0

Разделение запятыми заставляет python интерпретировать его как несколько аргументов.

Что вы хотите, это объединить строки в одну строку, что может быть достигнуто с помощью оператора +.

input("Month " + str(monthnumber) + ": ")

0

Немногие проблемы в вашем коде. Один из них, как я сказал в комментариях, переменные одинаковы для обоих циклов. Alsom в вашей внутренней петле, вы находитесь iterating, прося каждую температуру внутри каждого цикла. Кроме того, вы не держите температуру нигде. Вот решение, я рекомендую,

years = int(raw_input("Enter number of years: ")) 
#dictionary to hold year and temperature for each month for that year 
temp = {} 

for i in range(0, years): 
    curr_year = raw_input("Enter current year: ") 
    temp[curr_year] = [] 
    for i in range(0, 12): 
     temp[curr_year].append((int(raw_input("Enter temperature: ")))) 

Here является рабочая версия кода выше

1

Попробуйте это:

years_num = int(input("How many years?: ")) 

for year_num in range(1, years_num + 1): 
    input("year " + str(year_num) + "?: ") 
    for month_num in range(1, 13): 
     input("month " + str(month_num) +":") 

Затем вы можете хранить информацию ввода в виде списка или Dict ,

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