Как ограничить вводимые данные в 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 'ошибка')