Как прописать код, чтобы при вводе пользователем любого значения кроме числа выдавал "Ошибка!"
Потому что так, например если пользователь вводит слово вместо числа, то else
не срабатывает.
user = int(input("Сколько вам лет?"))
if user >=18 and user <=100:
print("Привет!")
elif user <18:
print("Ты ещё мелкий")
else:
print("Ошибка")
Ответы (4 шт):
x = input()
while True:
try:
int(x)
except:
print('Неправильный ввод!')
x = input()
else:
y = int(x)
break
if y > 18:
...
Помимо использования исключений есть и другой способ.
age = input("Сколько вам лет?")
while not age.isdigit():
if not age.isdigit(): # проверяем, является ли вводимая строка числом
print("Возраст должен быть числом")
age = input("Сколько вам лет?")
age = int(age)
if 18 <= age <= 100:
print("Привет!")
elif user < 18:
print("Ты ещё мелкий")
else:
print("Ошибка")
Программа у вас учебная, но стоит знать о подводном камне метода isdigit
Если ввести нечто подобное, то мы получим True
.
>>> '¹'.isdigit()
>>> True
Однако при попытке преобразовать этот ввод в числовой тип, мы получим ValueError
В ответах, которые я тут вижу, не учитывается ввод таких вариантов, как: -4,12. Значения типа 4.12 для возраста не такие уж и неправильные, как может показаться. Ограничение в 100 лет тоже лишнее, а вдруг пользователь - разумная черепаха или Йода. Особенно если значение возраста передаётся в некую функцию (не в данном случае) программно. Не может быть такого? Может. Практически в каждый момент времени (кроме днюхи) наш точный возраст - ненатуральное число лет. Для того, чтоб избавиться от баловства и случайных ошибок, обработку ввода рекомендую усилить. И всегда предполагать, что программу будут ломать. Это стиль. Уважительность и грамотность в общении с пользователем, кстати, тоже не будут лишними. Вот консольный скрипт для тестирования:
import os
import math
v_age = input("\nУкажите Ваш возраст: ")
try:
v_age = math.floor(abs(float(v_age.replace(",", "."))))
if v_age >= 18:
print("\nПривет!")
else:
print("\nВы несовершеннолетний!")
except Exception as e:
print(f"Указано ошибочное значение возраста! Подробнее:\n{e}")
print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
user = 0
while True:
try:
user = int(input("Сколько вам лет? "))
except ValueError:
print("Ошибка")
else:
break
if user >= 18 and user <= 100:
print("Привет!")
else:
print("Ты ещё мелкий")