Как избежать ошибки при вводе данных? (Начальный уровень Python)
При изучении Python я решаю задачи, где в условии заранее указано, что пользователь вводит либо число, либо строку. В обучающих задачах пока не объясняется что делать, чтобы избежать ошибки, если пользователь введет строку вместо требуемого числа. Например, нужно возвести число во вторую степень:
a = int(input())
print(a ** 2)
Пользователь вводит: "ten" вместо "10". Появляется ошибка "ValueError: invalid literal for int() with base 10: 'ten'"
Но что если я хочу написать программу, в которой на вход можно получить и строку, и число? То есть если пользователь ввел "ten" вместо "10", то программа выведет не ошибку, а сообщение "Введите цифру".
Или если немного изменить задание: пользователь вводит число, программа выводит это число в квадрате. Но если пользователь ввел строку вместо числа, то программа выведет эту строку, умноженную на 2 (a * 2, вместо a ** 2). То есть программа выведет не ошибку, а "tenten". Это возможно?
Как это реализовать?
Ответы (1 шт):
ValueError это тип объекта, который называется "исключение". Программа бросает исключения, когда что-нибудь идет не так. Чтобы реагировать на них в собственном коде, придумали try/except.
raw_input = input()
try:
number = int(raw_input) # Если ввели не число, выполнение прервется здесь ...
print(number**2)
except ValueError: # (реакцию настроили только на ошибки определенного типа)
# ... и тогда прыгнет сюда
print(raw_input * 2)
В интернете можно найти много полезной информации по запросу "исключения python".