Рейтинг користувача: 5 / 5

Активна зіркаАктивна зіркаАктивна зіркаАктивна зіркаАктивна зірка
 

Завдання: обробка виключення при введенні користувачем невірної інформації.

Приклад для версії 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()