Неактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

Завдання: створити блок виключення для обробки помилки в необхідному блоці коду, а всередині нього розмістити ще один блок обробки помилок try-except.

Приклад для версії Python 3.5.

Програма працює наступним чином. Потрібно ввести правильний пароль, а якщо він буде введений невірно, програма запропонує зробити це повторно. При вдало введенному паролі програма закінчить своє виконання, видавши на екран логічний напис.

Для початку слід відразу ж ввести коректний пароль (1234). Для цього створюємо клас MyException і метод func_with_except, в якому і буде прописана основна частина програми.

class MyException:
    def func_with_except(self):

Цикл try-xcept оформлюємо в цикл while True, щоб була можливість повернутися до початку програми. Якщо ввести пароль правильний (1234), на екран виведеться напис, що пароль коректний і програма закінчить своє виконання з виведенням інформації про це на екран.

        while True:
            try:
                pas=int(input("Enter here a password: "))
                if pas == 1234:
                    print("Password is correct")
                    print("Programm was closed correct")
                    exit()

При введенні неправильного цифрового паролю виведеться напис, що ви помилилися і програма запропонує повторити. Якщо ввести 1, програма запуститься знову, про що користувача буде поінформовано. Якщо ж ввести відмінну від одиниці цифру на відповідь на питання повтору програми, програма просто зупинить свою роботу. Робиться це за допомогою функції exit ().

                else:
                    print("You are wrong")
                    try:
                        yes_or_no=int(input("Repeat? "))
                        if yes_or_no==1:
                            print("Run programm again")
                        else:
                            print("Programm was closed correct")
                            exit()

А ось якщо ввести букву замість цифри 1 або іншу в поле Repeat, відбудеться помилка і буде опрацьовано виняток ValueError, який покаже користувачеві інформацію на екрані про те, що введення букв некоректне в даному випадку і програма запропонує відповісти на питання (введення коректного пароля) ще раз . Програма таким чином запуститься заново завдяки циклу. Для візуального полегшення перегляду результатів програми використовується пунктирна лінія.

                    except ValueError as error:
                        print("invalid literal for int")
                        print("Please try enter correct password again")
                        print("------------------------------------------")

Якщо замість вірного пароля ввести літери, відбудеться виняток ValueError, який виведе відповідну інформацію для користувача на екран, тим самим показуючи, що виключення було коректно оброблено. Програма виведе також на екран інформацію, що потрібно ще раз спробувати ввести правильний пароль. Також малюємо пунктиром, щоб розмежувати простір і не заплутатися.

            except ValueError as error:
                print("invalid literal for int")
                print("You enter invalid number. Please try again")
                print("------------------------------------------")

Ну і не забуваємо створити екземпляр класу, а потім звернутися до його методу для виклику.

obj=MyException()
obj.func_with_except()

Тепер складаємо всі шматочки пазла і отримуємо наступну просту програму виключення у виключенні за допомогою циклу в Python 3.5.

class MyException:
    def func_with_except(self):
        while True:
            try:
                pas=int(input("Enter here a password: "))
                if pas == 1234:
                    print("Password is correct")
                    print("Programm was closed correct")
                    exit()
                else:
                    print("You are wrong")
                    try:
                        yes_or_no=int(input("Repeat? "))
                        if yes_or_no==1:
                            print("Run programm again")
                        else:
                            print("Programm was closed correct")
                            exit()
                    except ValueError as error:
                        print("invalid literal for int")
                        print("Please try enter correct password again")
                        print("------------------------------------------")
            except ValueError as error:
                print("invalid literal for int")
                print("You enter invalid number. Please try again")
                print("------------------------------------------")
obj=MyException()
obj.func_with_except()