Как избежать ошибки при вводе данных? (Начальный уровень 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 шт):

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

ValueError это тип объекта, который называется "исключение". Программа бросает исключения, когда что-нибудь идет не так. Чтобы реагировать на них в собственном коде, придумали try/except.

raw_input = input()
try:
    number = int(raw_input)  # Если ввели не число, выполнение прервется здесь ...
    print(number**2)
except ValueError:  # (реакцию настроили только на ошибки определенного типа)
    # ... и тогда прыгнет сюда
    print(raw_input * 2)

В интернете можно найти много полезной информации по запросу "исключения python".

→ Ссылка