Некорректно работают условия
def season(month):
if a == 12 or 1 or 2:
print ("зима")
if a == 3 or 4 or 5:
print("весна")
if a == 6 or 7 or 8:
print("лето")
if a == 9 or 10 or 11:
print("осень")
else:
print("нету такого месяца")
a = int(input ())
season(a)
Код выводит все времена года вместо одного
Ответы (2 шт):
Автор решения: Dezmonder
→ Ссылка
Во-первых, вы спрашиваете вопрос с тегом "mysql", хотя это явно не он.
Во-вторых, логика работы условий в пайтоне такова, что OR и AND "разграничивают" условия. Соответственно получается ваши условия имеют такой смысл:
a == 12? Или 1? Или 2?
А так как ненулевое число всегда истинно, вы и получаете true во всех условиях.
if a == 12 or a == 1 or a == 2:
Будет работать как вам надо.
А
if a in (12, 1, 2):
Будет при этом читаемое.
Автор решения: Алексей Р
→ Ссылка
Можно обойтись без множества if/elif, вычислив индекс времени года от 0 до 3 по формуле month // 3 % 4
def season(month):
return ("зима", "весна", "лето", "осень")[month // 3 % 4] if 1 <= month <= 12 else "нет такого месяца"
for a in range(14):
print(a, season(a))
0 нет такого месяца
1 зима
2 зима
3 весна
4 весна
5 весна
6 лето
7 лето
8 лето
9 осень
10 осень
11 осень
12 зима
13 нет такого месяца