Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.Python.8-10.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.2 Mб
Скачать

Обработка исключений

Вы можете писать программы, которые будут обрабатывать определенные исключения. Посмотрите на следующий пример, в котором пользователю будет выдаваться приглашение до тех пор, пока не будет введено целое число или выполнение не будет прервано (обычно Ctrl-C). Во втором случае генерируется исключение KeyboardInterrupt.

while True:     try:         x = int(input("Введите, пожалуйста, целое число: "))         break     except ValueError:         print "Вы ошиблись. Попробуйте еще раз…" …

Инструкция try работает следующим образом.

  • Сначала выполняется ветвь try (инструкции, находящиеся между ключевыми словами try и except).

  • Если не возникает исключительной ситуации, ветвь except пропускается и выполнение инструкции try завершается.

  • Если во время выполнения ветви try генерируется исключение, оставшаяся часть ветви пропускается. Далее, если тип (класс) исключения соответствует указанному после ключевого слова except, выполняется ветвь except и выполнение инструкции try завершается.

  • Если исключение не соответствует указанному после ключевого слова except, то оно передается внешнему блоку try или, если обработчик не найден, исключение считается не перехваченным, выполнение прерывается и выводится сообщение об ошибке.

Если исключение не обрабатывается, значение исключения выводится в сообщении об ошибке после имени класса исключения.

Обработчик перехватывает не только исключения, сгенерированные непосредственно в блоке try, но и в вызываемых из него функциях.

Генерация исключений

Инструкция raise позволяет программисту принудительно сгенерировать исключение. Например:

>>> raise NameError('HiThere') Traceback (most recent call last):   File "<stdin>", line 1, in <module> NameError: HiThere

В качестве аргумента raise используется экземпляр класса. Класс указывает на тип исключения; аргумент, передаваемый конструктору, обычно описывает "подробности" возникновения исключительной ситуации.

"Страхование" от ошибок

Еще один вариант записи инструкции try - с определением "страховочной" ветви finally, которая будет выполняться при любых обстоятельствах. Например:

try:     raise KeyboardInterrupt() finally:     print 'До свидания!'

Ветвь finally выполняется независимо от того, возникла ли исключительная ситуация во время выполнения блока try или нет, в том числе и если выход происходит по инструкции break или return.

Русские буквы в python

ВВОД И ВЫВОД РУССКИХ БУКВ

В Python (начиная с версии 3) строки хранятся в кодировке Unicode. Это позволяет использовать в них в том числе буквы национальных алфавитов: от русских до китайских иероглифов:

>>> s = input() Привет! >>> print(s) Привет! 

ИСПОЛЬЗОВАНИЕ РУССКИХ БУКВ В КОДЕ ПРОГРАММЫ

Программа на языке Python (начиная с версии 3) должна сохраняться в кодировке utf-8. Тогда в ней можно использовать русские буквы, как в строковых литералах, так и в именах переменных и функций (но последнее является очень плохим стилем — никогда так не делайте):

имя = "Вася" print(имя)

РУССКИЕ БУКВЫ И WING IDE 101

В среде Wing IDE 101 версии 5 для использования русских букв нужно прописать в настройках соответствующие кодировки: в меню Edit — Preferences — Debugger — I/O в обоих полях установите кодировку utf-8. После этого в меню Edit — Preferences — Files установите в поле Default Encoding значение utf-8. Только после этого можно создавать новый файл и использовать в нем русские буквы.(Файлы, созданные до изменения настроек, могут сохраниться в неправильной кодировке, и изменение настроек в этом случае не поможет.)

Парадигма структурного программирования

Структурным программированием называется разработка программ с помощью представления их в виде иерархической структуры блоков. Эта парадигма разработана в 70-х годах XX века Э. Дейкстрой и Н. Виртом.

  1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:

    • последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

    • ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;

    • цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).

  2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.

  3. Разработка программы ведётся пошагово, методом «сверху вниз».

Структурное программирование широко используется в крупномасштабных проектах, когда на первый план выходят следующие преимущества:

  • легкость повторного использования фрагментов кода, оформленных как процедуры (например, в библиотеках);

  • легкость прослеживания логики программы;

  • возможность сопровождения программного продукта через длительное время после написания кода или кем-то, кроме его автора.

Структурное программирование часто называют процедурным программированием, что не совсем корректно, так как процедурное программирование — синоним императивного программирования.