Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 94
Текст из файла (страница 94)
Присваивание, выражения и printВ заключениеВ этой главе мы начали детальный обзор инструкций языка Python, исследовав инструкции присваивания, выражения и операции print. Несмотря навсю простоту использования этих инструкций, у них имеются альтернативныеформы, которые являются необязательными, но порой достаточно удобнымив применении. Комбинированные инструкции присваивания и возможностьперенаправления вывода в операциях print, например, позволяют уменьшитьобъем программного кода.
Кроме того, мы изучили синтаксис имен переменных, приемы перенаправления потоков и различные часто встречающиесяошибки, которых следует избегать, такие как обратное присваивание переменной значения, возвращаемого методом append.В следующей главе мы продолжим наше знакомство с инструкциями, подробно рассмотрев инструкцию if – основную инструкцию организации выборав языке Python.
В этой главе мы еще раз вернемся к синтаксической моделиязыка и рассмотрим поведение логических выражений. Но прежде чем двинуться дальше, проверьте знания, полученные здесь, с помощью контрольныхвопросов.Закрепление пройденногоКонтрольные вопросы1. Назовите три способа, с помощью которых можно присвоить одно и то жезначение трем переменным.2. Что требуется держать в уме, когда трем переменным присваивается одини тот же изменяемый объект?3. В чем заключается ошибка в инструкции L = L.sort()?4.
Как с помощью инструкции print вывести текст во внешний файл?Ответы1. Можно выполнить групповое присваивание (A = B = C = 0), присваивание последовательности (A, B, C = 0, 0, 0) или несколько инструкций присваиванияв отдельных строках (A = 0, B = 0 и C = 0). И последний способ, как было показано в главе 10, заключается в том, чтобы объединить инструкции в однойстроке, разделив их точкой с запятой (A = 0; B = 0; C = 0).2. Если выполнить присваивание следующим образом:A = B = C = []то все три имени будут ссылаться на один и тот же объект, поэтому непосредственное изменение объекта с помощью одной переменной (например,A.append(99)) отразится на других.
Это справедливо только для изменений,производимых непосредственно в изменяемых объектах, таких как спискии словари. Для неизменяемых объектов, таких как числа и строки, эта проблема не проявляется.3. Метод списков sort, как и метод append, выполняет изменения непосредственно в объекте и возвращает значение None, а не измененный список. Обратноеприсваивание переменной L приведет к тому, что в нее запишется значениеЗакрепление пройденного375None, а не отсортированный список. Как будет показано далее в этой частикниги, недавно в языке появилась новая функция sorted, которая выполняет сортировку любых последовательностей и возвращает новый список с результатами сортировки. Поскольку в этом случае изменения производятсяне в самом объекте, есть смысл сохранить возвращаемое значение.4.
Чтобы реализовать вывод в файл в единственной операции print, в версии 3.0 можно использовать вызов вида print(X, file=F), а в версии 2.6 использовать расширенную форму инструкции print >> file или вручнуюперенаправить объект sys.stdout, открыв файл перед вызовом инструкцииprint и восстановив оригинальное значение после вывода. Можно такжеперенаправить весь выводимый программой текст в файл с помощью синтаксических конструкций системной командной оболочки, но этот вариантк языку Python никакого отношения не имеет.Глава12.Условная инструкция ifи синтаксические правилаЭта глава представляет условную инструкцию if, которая является основнойинструкцией, используемой для выбора среди альтернативных операций наоснове результатов проверки.
Поскольку в нашем обзоре это первая составнаяинструкция – инструкция, встроенная в другую инструкцию, – мы заодно более подробно, чем в главе 10, рассмотрим общие концепции, на которых покоится синтаксическая модель инструкций в языке Python. А так как условнаяинструкция вводит понятие проверки, мы также будем иметь дело с логическими выражениями и остановимся на некоторых деталях относительно проверок истинности вообще.Условные инструкции ifЕсли говорить простым языком, в Python инструкция if выбирает, какое действие следует выполнить. Это основной инструмент выбора в Python, которыйотражает большую часть логики программы на языке Python.
Кроме того, этонаша первая составная инструкция. Как и все составные инструкции языкаPython, инструкция if может содержать другие инструкции, в том числе другие условные инструкции if. Фактически ����������������������������������Python����������������������������позволяет комбинировать инструкции в программные последовательности (чтобы они выполнялись одна задругой) и в произвольно вложенные конструкции (которые выполняются только при соблюдении определенных условий).Общая формаУсловная инструкция if в языке Python – это типичная условная инструкция,которая присутствует в большинстве процедурных языков программирования.
Синтаксически сначала записывается часть if с условным выражением,далее могут следовать одна или более необязательных частей elif («else if»)с условными выражениями и, наконец, необязательная часть else. Условныевыражения и часть else имеют ассоциированные с ними блоки вложенных ин-377Условные инструкции ifструкций, с отступом относительно основной инструкции. Во время выполнения условной инструкции if интерпретатор выполняет блок инструкций, ассоциированный с первым условным выражением, только если оно возвращаетистину, в противном случае выполняется блок инструкций else.
Общая формазаписи условной инструкции if выглядит следующим образом:if <test1>:<statements1>elif <test2>:<statements2>else:<statements3># Инструкция if с условным выражением test1# Ассоциированный блок# Необязательные части elif# Необязательный блок elseПростые примерыC целью демонстрации инструкции if в действии рассмотрим несколько простых примеров. Все части этой инструкции, за исключением основной частиif с условным выражением и связанных с ней инструкций, являются необязательными.
В простейшем случае остальные части инструкции опущены:>>> if 1:...print ‘true’...trueОбратите внимание, что приглашение к вводу изменяется на ... для строк продолжения в базовом интерфейсе командной строки, используемом здесь (в IDLEтекстовый курсор просто перемещается на следующую строку уже с отступом,а нажатие на клавишу Backspace возвращает на строку вверх). Ввод пустой строки (двойным нажатием клавиши Enter) завершает инструкцию и приводит к еевыполнению. Вспомните, что число 1 является логической истиной, поэтомуданная проверка всегда будет успешной. Чтобы обработать ложный результат,добавьте часть else:>>> if not 1:...print ‘true’...
else:...print ‘false’...falseМножественное ветвлениеТеперь рассмотрим пример более сложной условной инструкции if, в которойприсутствуют все необязательные части:>>>>>>..................Runx = ‘killer rabbit’if x == ‘roger’:print “how’s jessica?”elif x == ‘bugs’:print “what’s up doc?”else:print ‘Run away! Run away!’away! Run away!378Глава 12. Условная инструкция if и синтаксические правилаЭта многострочная инструкция простирается от строки if до конца блока else.При выполнении этой инструкции интерпретатор выполнит вложенные инструкции после той проверки, которая даст в результате истину, или блок else,если все проверки дадут ложный результат (в этом примере так и происходит).На практике обе части elif и else могут быть опущены, и в каждой части можетиметься более одной вложенной инструкции.
Обратите внимание, что связьслов if, elif и else определена тем, что они находятся на одной вертикальнойлинии, с одним и тем же отступом.Если вы знакомы с такими языками, как C или Pascal, вам будет интересноузнать, что в языке Python отсутствует инструкция switch или case, котораяпозволяет выбирать производимое действие на основе значения переменной.Вместо этого множественное ветвление оформляется либо в виде последовательности проверок if/elif, как в предыдущем примере, либо индексированием словарей, либо поиском в списках.