Что нужно написать в 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 шт):

Автор решения: Elena_Gnil

Вообще вот так:

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])
→ Ссылка