Что нужно написать в elif, чтобы при вводе отрицательных чисел и чисел больше 12 выводил "ошибка"?
n = int(input("Введите номер месяца: "))
if n <= 2 or n == 12 or n > 0:
print("Зима")
elif n <= 5 :
print("Весна")
elif n <= 8 :
print("Лето")
elif n <= 11 :
print("Осень")
elif n > 12 or n <= 0:
print("ОШИБКА")
Ответы (2 шт):
Вообще вот так:
elif (n<0 or n>12):
print("Ошибка")
Но у вас ошибка в том, что условие if(n<=2 и т.д.) сработает раньше, чем elif(n<0 or n>12), так как число меньше нуля, будет так же и меньше двух. Вообще у вас абсолютно неверный код, неправильно сформированы условия.
Не буду писать код за вас, но немного объясню чтобы вы подумали. Для зимы это будет if(n==12 or (n>0 and n<3)), в n==12 вы проверяете является ли месяц декабрём, во второй части условия вы проверяете находится ли он между январём(так как он первый) и мартом(он третий). Проверяется не равно ли число двенадцати ИЛИ число больше нуля И меньше трёх (например n=1). Весна начинается с третьего месяца по пятый (n>2 and n<6). Думайте ?
Можно нужное условие для целых чисел сформулировать и таким образом: not (0 < n < 13), "все, что не входит в диапазон от 1 до 12".
Подобные задачи циклического характера удобнее решать через индексирование. Результатом выражения n % 12 // 3 будут числа от 0 до 3, т.е. индексы в кортеже с названиями сезонов.
Дополнительно рекомендую проверять, число ли введено (последовательность цифр) во избежание ошибки при преобразовании.
n = input("Введите номер месяца: ")
if n.isdigit(): # проверка, введена ли последовательность цифр
n = int(n)
else:
n = -1
if not (0 < n < 13):
print("ОШИБКА") # ошибка выводится, когда введено не (целое) число или число находится вне допустимого диапазона
else:
print(("Зима", "Весна", "Лето", "Осень")[n % 12 // 3])