Задача: обработка исключения при введении пользователем неверной информации.
Пример для версии Python 3.5. Обрабатывается исключение путём вызова определённой функции, в которой прописаны условия для работы c введёнными переменными и исключением, которое может возникнуть при введении пользователем не соответствующей данному типу объекта (int) информации. Перехватка и обработка исключения ValueError.
Для примера взяты три числовые переменные, которые должны быть введены пользователем для их последующего суммирования для получения пароля. Создаём для удобства класс MyException, а в нём метод def func_with_except. Сразу же стоит прописать цикл для повторного введения пароля при необходимости и сразу прописываем блок try-except для обработки исключения (ошибки ввода в объект int нечисловых символов).
class MyException: def func_with_except(self): while True: try: a = int(input("Enter a: ")) b = int(input("Enter b: ")) c = int(input("Enter c: "))
Пользователю нужно ввести поочерёдно три числа, а затем ввести пароль (сумму трёх чисел). Если пароль совпадает, выводится информация о правильном введении. Если сумма не совпадает, выводится информация, что пароль неверный. Программа заключена в цикл (while True) и пользователю при согласии (введении yes) после правильного введения пароля программа сработает сначала. При введении любого другого слова или символа программа закончит свою работу. При введении неправильной суммы трёх переменных (чисел, которые юзер сам и вводит), программа запустится с начала.
password = a + b + c passw=int(input("Enter summ a,b,c: ")) if passw == password: print("You did it!") print("Answer: ", password) else: print("You are wrong") y_n=str(input("Run the program. Try again? ")) if y_n=="yes": print("------------------------------------------") else: exit()
Если же вместо числа пользователь ввёл буквы или другие символы с клавиатуры (отличные от чисел), произойдёт ошибка, исключение обработается и выведется информация, что введённый символ не соответствует объекту int (то есть, числу). Для удобства выведена поясняющая информация и разделительная черта, чтобы было ясно, когда цикл повторится.
except ValueError as error: print("invalid literal for int") print("You enter invalid number. Please try again") print("------------------------------------------")
Осталось только создать экземпляр класса и обратиться напрямую к методу только что созданного экземпляра класса, чтобы вызвать работу программы. Делается это очень просто, эти команды новички осваивают одними из первых.
obj=MyException() obj.func_with_except()
Вот так код выглядит целиком:
class MyException: def func_with_except(self): while True: try: a = int(input("Enter a: ")) b = int(input("Enter b: ")) c = int(input("Enter c: ")) password = a + b + c passw=int(input("Enter summ a,b,c: ")) if passw == password: print("You did it!") print("Answer: ", password) else: print("You are wrong") y_n=str(input("Run the program. Try again? ")) if y_n=="yes": print("------------------------------------------") else: exit() except ValueError as error: print("invalid literal for int") print("You enter invalid number. Please try again") print("------------------------------------------") obj=MyException() obj.func_with_except()