{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Практические задания\n", "\n", "В качестве практики для закрепления темы исключений предлагается воспользоваться следующими двумя файлами, позаимствованными [отсюда](https://uwpce-pythoncert.github.io/ProgrammingInPython/exercises/exceptions/except_exercise.html) и переведенными на русский. \n", "\n", "````{tabbed} except_test.py\n", "```python\n", "\"\"\"\n", "Небольшой модуль, разработанный таким образом, \n", "чтобы возбуждать исключения, \n", "когда запущен из файла except_exercise.py\n", "\"\"\"\n", "\n", "import time\n", "\n", "conclude = \"And what leads you to that conclusion?\"\n", "district = \"Finest in the district, sir.\"\n", "cheese = \"It's certainly uncontaminated by cheese.\"\n", "clean = \"Well, it's so clean.\"\n", "shop = \"Not much of a cheese shop really, is it?\"\n", "cust = \"Customer: \"\n", "clerk = \"Shopkeeper: \"\n", "\n", "\n", "def fun(reaper):\n", " if reaper == 'spam':\n", " print(s)\n", " elif reaper == 'cheese':\n", " print()\n", " print('Spam, Spam, Spam, Spam, Beautiful Spam')\n", " elif reaper == 'mr death':\n", " print()\n", " return('{}{}\\n{}{}'.format(cust, shop, clerk, district))\n", "\n", "\n", "def more_fun(language):\n", " if language == 'java':\n", " test = [1, 2, 3]\n", " test[5] = language\n", " elif language == 'c':\n", " print('{}{}\\n{}{}'.format(cust, conclude, clerk, clean))\n", "\n", "\n", "def last_fun():\n", " print(cust, cheese)\n", " time.sleep(1)\n", " import antigravity\n", "\n", "```\n", "````\n", "````{tabbed} except_exercise.py\n", "```python\n", "\"\"\"\n", "Упражнения на исключения.\n", "Добавьте блоки `try/exception`.\n", "\n", "Ловите как можно более специфичное исключение, нежели чем все ошибки сразу.\n", "\"\"\"\n", "\n", "from except_test import fun, more_fun, last_fun\n", "\n", "\n", "# Разберитесь, что за исключение,\n", "# поймайте его и пока в этом обрабатывающем блоке \n", "# попробуйте со вторым элементом списка.\n", "first_try = ['spam', 'cheese', 'mr death']\n", "\n", "joke = fun(first_try[0])\n", "\n", "# Вот `try/except` блок. Добавьте `else`, печатающий `not_joke`\n", "try:\n", " not_joke = fun(first_try[2])\n", "except SyntaxError:\n", " print('Run Away!')\n", "\n", "\n", "\n", "\n", "# Разберитесь, что за исключение,\n", "# поймайте его и пока в этом обрабатывающем блоке \n", "#\n", "# попробуйте вызвать функцию `more_fun` с вторым языком в списке, \n", "# опять присваивая результат к more_joke\n", "#\n", "# Если исключений больше нет, \n", "# то вызовите функцию `more_fun` с последним языком в списке\n", "#\n", "# Наконец, по в блоке `try/except` и независимо от того, \n", "# возникли ли какие-либо исключения, \n", "# вызовите функцию `last_fun` без аргументов (шутка задумана). \n", "\n", "\n", "langs = ['java', 'c', 'python']\n", "\n", "more_joke = more_fun(langs[0])\n", "```\n", "````\n", "\n", "Сохраните эти файлы под названиями `except_test.py` и `except_exercise.py` и запустите файл `except_exercise.py`.\n", "```python\n", "python except_exercise.py\n", "```\n", "Возникнет ошибка. Обработайте её. Возникнет новая. И так далее. Продолжайте обрабатывать ошибки, и следуйте инструкции в `except_exercise.py` до тех пор, пока они не пропадут полностью. При этом все редакции должны осуществлять в файле `except_exercise.py`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "language_info": { "name": "python" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }