2016-12-28 7 views
-3

Я довольно новичок в Python. Я использую PyCharm для практики. Когда я вводил «декабрь» в месяц, а интерпретатор признавал декабрь осенним месяцем. Почему это происходит? (Посмотрите на дно, если вы не понимаете, что я имею в виду)мой переводчик не признает декабрь как зимний месяц (if/else)

Winter = ['December', 'January', 'February'] 
Spring = ['March', 'April', 'May'] 
Summer = ['June', 'July', 'August'] 
Autumn = ['September', 'October', 'November'] 

month = input('What is the current month? ') 

if month == Winter: 
    print('%s is in the Winter' % month) 

elif month == Spring: 
    print('%s is in the Spring' % month) 

elif month == Summer: 
    print('%s is in the Summer' % month) 

else: 
    print('%s is in the Autumn' % month) 

What is the current month? December 
December is in the Autumn 
+5

Возможно, вы имели в виду 'month in Winter' вместо' month == Winter'. В настоящее время вы сравниваете строку со списком, она всегда будет ложной, а предложение else всегда вызывается. –

ответ

2

В month в вашем примере это строка (а не список), так что вы не можете сравнить его в список. Что вы можете сделать, это проверить, если месяц существует в списке, используя var1 in list1:

Winter = ['December', 'January', 'February'] 
Spring = ['March', 'April', 'May'] 
Summer = ['June', 'July', 'August'] 
Autumn = ['September', 'October', 'November'] 

month = input('What is the current month? ') 

if month in Winter: 
    print('%s is in the Winter' % month) 

elif month in Spring: 
    print('%s is in the Spring' % month) 

elif month in Summer: 
    print('%s is in the Summer' % month) 

else: 
    print('%s is in the Autumn' % month) 

What is the current month? December 
December is in the Winter 
+0

@KenYN Спасибо за исправление :) – Dekel

0

когда вы пишете «если месяц == Зима:» теперь проверить, если вход от пользователя является массив равно массив зимой или нет, то он проверяет другую, если утверждения, то введите в другое заявление и распечатать «печать ("% s находится в Балахнинском% в месяц)»за что код должен написать:

Winter = ['December', 'January', 'February'] 
Spring = ['March', 'April', 'May'] 
Summer = ['June', 'July', 'August'] 
Autumn = ['September', 'October', 'November'] 

month = raw_input('What is the current month? ') 

if Winter.__contains__(month): 
    print('%s is in the Winter' % month) 

elif Spring.__contains__(month): 
    print('%s is in the Spring' % month) 

elif Summer.__contains__(month): 
    print('%s is in the Summer' % month) 

else: 
    print('%s is in the Autumn' % month) 

содержат построен в функции в python, которые проверяют, задан ли данный параметр в этом массиве или нет

+0

Этот ответ по-прежнему отвечает на осенние месяцы и непризнанные записи и будет печатать «xyz is the Autumn». Ему нужен дополнительный 'elif', как описано в моем ответе. –

+0

вы правы, но я ответил на его вопрос, и это является предварительным условием для функции, если он пишет какое-либо слово, не содержащее зимой или весной. Функция «лето» напечатает его, чтобы найти это слово осенью –

1

Оставляя в стороне == против ошибки in, ваш код имеет недостаток объединения в оговорке else в течение месяца осенью или не признается. Даже после первой коррекции должны быть 4 if предложения, а затем оговорка else для плохих записей. Я оставлю вас соответствующим образом изменить ответ Декеля.

Для проблемы, представленной, глядя на сезон в течение месяца, вы можете вместо этого использовать dict.

wi, sp, su, au = 'Winter', 'Spring', 'Summer', 'Autumn' 
season = {'December': wi, 'January': wi, 'February': wi, 
      'March': sp, 'April': sp, 'May': sp, 
      'June': su, 'July': su, 'August': su, 
      'September': au, 'October': au, 'November': au} 
month = input('Enter a month: ') 
try: 
    print('{} is in {}'.format(month, season[month])) 
except KeyError: 
    print('{} is not recognized'.format(month)) 

Чтобы быть более гибким во входной капитализации, изменить строки ввода в

month = input('Enter a month: ').lower() 

и строчные месяцы в season.

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