Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе. |
Условное выполнение
5.7. Перехват исключений с использованием try и except
Ранее мы рассматривали код, где использовались функции raw_input и int. Мы также видели их ненадежное исполнение:
>>> speed = raw_input(prompt) What...is the airspeed velocity of an unladen swallow? What do you mean, an African or a European swallow? >>> int(speed) ValueError: invalid literal for int() >>>
Когда мы запускали эти инструкции в интерпретаторе Python, то получали строку приглашения, затем набирали наш текст.
Пример простой программы, которая переводит температуру по Фаренгейту в температуру по Цельсию:
inp = raw_input('Enter Fahrenheit Temperature:') fahr = float(inp) cel = (fahr - 32.0) * 5.0 / 9.0 print cel
Если мы запустим этот код и введем некорректные данные, то получим недружелюбное сообщение об ошибке:
Enter Fahrenheit Temperature:72 22.2222222222 Enter Fahrenheit Temperature:fred Traceback (most recent call last): File "fahren.py", line 2, in <module> fahr = float(inp) ValueError: invalid literal for float(): fred
Существует структура условного выполнения, встроенная в Python, которая обрабатывает эти типы ожидаемых и неожиданных ошибок, она называется "try / except". Идея try и except заключается в следующем: вы знаете, что некоторая последовательность инструкций может иметь проблемы, и вы хотите добавить некоторые инструкции, которые бы выполнялись в случае возникновения ошибки. Эти дополнительные инструкции (блок except) игнорируются, если ошибок не произошло.
Вы можете представить try и except как страховой полис для последовательности инструкций.
Перепишем нашу программу о температуре следующим образом:
inp = raw_input('Enter Fahrenheit Temperature:') try: fahr = float(inp) cel = (fahr - 32.0) * 5.0 / 9.0 print cel except: print 'Please enter a number'
Python начинает выполнение с последовательности инструкций в блоке try. Если все выполняется без ошибок, то блок except пропускается. Если произошло исключение (exception) в блоке try, то Python покидает блок try и выполняет последовательность инструкций внутри блока except.
Enter Fahrenheit Temperature:72 22.2222222222 Enter Fahrenheit Temperature:fred Please enter a number
Обработка исключения с помощью инструкции try называется перехватом (catching) исключения. В рассмотренном примере, блок except выводит на экран сообщение об ошибке. В общем, перехват исключения предоставляет вам шанс решить проблему, попытаться заново или хотя бы красиво завершить работу программы.
5.10. Словарь
Тело (body): последовательность инструкций в составной инструкции.
Логическое выражение (boolean expression): выражение, значением которого может быть либо True, либо False.
Ветка (branch): одна из возможных последовательностей инструкций в условной инструкции.
Цепочное условие (chained conditional): условная инструкция с несколькими возможными ветками.
Оператор сравнения (comparison operator): один из операторов, который сравнивает операнды: ==, !=, >, <, >= и <=.
Условная инструкция (conditional statement): инструкция, которая контролирует поток выполнения в зависимости от некоторого условия.
Условие (condition): логическое выражение в условной инструкции, которое определяет, какая ветка выполнится.
Составная инструкция (compound statement): инструкция, которая содержит заголовок и тело. Заголовок заканчивается (:). Тело смещается относительно заголовка.
Логический оператор (logical operator): один из операторов, которые объединяют логические выражения: and, or и not.
Вложенное условие (nested conditional): условная инструкция, которая встречается в одной из веток другой условной инструкции.