Практические задания

Практические задания

В качестве практики для закрепления темы исключений предлагается воспользоваться следующими двумя файлами, позаимствованными отсюда и переведенными на русский.

"""
Небольшой модуль, разработанный таким образом, 
чтобы возбуждать исключения, 
когда запущен из файла except_exercise.py
"""

import time

conclude = "And what leads you to that conclusion?"
district = "Finest in the district, sir."
cheese = "It's certainly uncontaminated by cheese."
clean = "Well, it's so clean."
shop = "Not much of a cheese shop really, is it?"
cust = "Customer: "
clerk = "Shopkeeper: "


def fun(reaper):
    if reaper == 'spam':
        print(s)
    elif reaper == 'cheese':
        print()
        print('Spam, Spam, Spam, Spam, Beautiful Spam')
    elif reaper == 'mr death':
        print()
        return('{}{}\n{}{}'.format(cust, shop, clerk, district))


def more_fun(language):
    if language == 'java':
        test = [1, 2, 3]
        test[5] = language
    elif language == 'c':
        print('{}{}\n{}{}'.format(cust, conclude, clerk, clean))


def last_fun():
    print(cust, cheese)
    time.sleep(1)
    import antigravity

"""
Упражнения на исключения.
Добавьте блоки `try/exception`.

Ловите как можно более специфичное исключение, нежели чем все ошибки сразу.
"""

from except_test import fun, more_fun, last_fun


# Разберитесь, что за исключение,
# поймайте его и пока в этом обрабатывающем блоке 
# попробуйте со вторым элементом списка.
first_try = ['spam', 'cheese', 'mr death']

joke = fun(first_try[0])

# Вот `try/except` блок. Добавьте `else`, печатающий `not_joke`
try:
    not_joke = fun(first_try[2])
except SyntaxError:
    print('Run Away!')




# Разберитесь, что за исключение,
# поймайте его и пока в этом обрабатывающем блоке 
#
# попробуйте вызвать функцию `more_fun` с вторым языком в списке, 
# опять присваивая результат к more_joke
#
# Если исключений больше нет, 
# то вызовите функцию `more_fun` с последним языком в списке
#
# Наконец, по в блоке `try/except` и независимо от того, 
# возникли ли какие-либо исключения, 
# вызовите функцию `last_fun` без аргументов (шутка задумана). 


langs = ['java', 'c', 'python']

more_joke = more_fun(langs[0])

Сохраните эти файлы под названиями except_test.py и except_exercise.py и запустите файл except_exercise.py.

python except_exercise.py

Возникнет ошибка. Обработайте её. Возникнет новая. И так далее. Продолжайте обрабатывать ошибки, и следуйте инструкции в except_exercise.py до тех пор, пока они не пропадут полностью. При этом все редакции должны осуществлять в файле except_exercise.py.