Как ограничить вводимые данные в Python?

Нужно что бы если в вводимых данных было число 24 или более - выходила ошибка, с словами так же. Код, на котором я сейчас остановился.

time = input()
if '24' in time:
    print('Ошибка')
elif '11' in time:
    print('День')
elif '12' in time:
    print('День')
elif '13' in time:
    print('День')
elif '14' in time:
    print('День')
elif '15' in time:
    print('День')
elif '16' in time:
    print('День')
elif '17' in time:
    print('День')
elif '18' in time:
    print('Вечер')
elif '19' in time:
    print('Вечер')
elif '20' in time:
    print('Вечер') 
elif '21' in time:
    print('Вечер')  
elif '22' in time:
    print('Вечер') 
elif '23' in time:
    print('Ночь') 
elif '0' in time:
    print('Ночь')
elif '1' in time:
    print('Ночь')
elif '2' in time:
    print('Ночь')
elif '3' in time:
    print('Ночь')
elif '4' in time:
    print('Ночь')
elif '5' in time:
    print('Утро')
elif '6' in time:
    print('Утро')
elif '7' in time:
    print('Утро')
elif '8' in time:
    print('Утро')
elif '9' in time:
    print('Утро')
elif '10' in time:
    print('День')
else:
    print('Ошибка')

Ответы (3 шт):

Автор решения: Сергей Островский
time = int(input('Введи сколько часов: '))

night = [i for i in range(0, 7)]
morning = [i for i in range(6, 13)]
day = [i for i in range(12, 19)]
evening = [i for i in range(18, 24)]

if time in night:
    print('Ночь')
elif time in morning:
    print('Утро')
elif time in day:
    print('День')
elif time in evening:
    print('Вечер')
else:
    print('Не правильно ввел')

Шо я сделал?

time = int(input('Введи сколько часов: ')) Изначально input() возвращает строку, потому мы обернули в int() дабы получить из строки получить число

night = [i for i in range(0, 7)] Я сгенерировал список чисел от 0 до 6

if time in night: Мы проверяем в каком списке содержится введенное число

Есть и такой вариант, что бы пользователь ввел только число:

time = input('Введи сколько часов: ')
if time.isdigit():
    night = [i for i in range(0, 7)]
    morning = [i for i in range(6, 13)]
    day = [i for i in range(12, 19)]
    evening = [i for i in range(18, 24)]

    if time in night:
        print('Ночь')
    elif time in morning:
        print('Утро')
    elif time in day:
        print('День')
    elif time in evening:
        print('Вечер')
    else:
        print('Не правильно ввел')
else:
    print('Ошибка ввода, дай мне число')

С помощью .isdigit() мы убеждаемся что в строке находится число

→ Ссылка
Автор решения: Алексей Белкин

Без генераторов:

time = input()
try:
    int_time = int(time)
    if int_time > 0:
        if (int_time >=4) and (int_time<12):
            print('Утро')
        elif (int_time >=12) and (int_time<18):
            print('День')
        elif (int_time >=18) and (int_time<24):
            print('Вечер')
        elif (int_time >=24):
            print('Такого времени нет!')
        else:
            print('Ночь')
    else:
        print('отрицательного времени нет!')
except:
    print('Введите число!')
→ Ссылка
Автор решения: SergFSM

в данном случае можно обойтись одним if:

l = ['ночь', 'ночь', 'ночь', 'ночь', 'ночь', 'утро', 'утро', 'утро', 'утро', 'утро', 'день', 'день', 'день', 'день', 'день', 'день', 'день', 'день', 'вечер', 'вечер', 'вечер', 'вечер', 'вечер', 'ночь']

time = int(input())
print(l[time] if 0<=time<24 else 'ошибка')
→ Ссылка