Завдання: обробка виключення при введенні користувачем невірної інформації.
Приклад для версії 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()