Лутц М. - Изучаем Python (1077325), страница 61
Текст из файла (страница 61)
Вообще, делайте все то же, что вы делаете на языке С, но Напомним, П)ЬŠ— среда разработки, специально созданная С в!с(о чвп Возвшп з проекте Ру!)топ. Первый релиз вышел вместе с версией Ру$)«оп 1.5.2. Одно из объяснений использования такого слова (1«1!е — бездействующий, ленивый), в отличие от принятого в других языковых средах термина 10Е, объявлено иа свйте ру!)топ.огв (И!тря//шшшрут!«ои.огд/!«(!е/«!ос/!«(!ета!нЛтт!) и выглядит твк: «1ПЬŠ— это вкровим от 1п!ейтз!ес! 1)ечеЬортпеп! Епч!гоптеп!». См. также главу 3. — Примеч. науч. ред.
гвг Глава 10. Введение в инструкции языка Ру1Ьол уберите фигурные скобки и ваш программный код будет удовлетворять правилам синтаксиса языка РуФоп. Несколько специальных случаев Как уже упоминалось ранее, в синтаксической модели языка РуЬ)топ1 ° Конец строки является концом инструкции, расположенной в этой строке (точка с запятой не требуется). ° Вложенные инструкции объединяются в блоки по величине отступов (без фигурных скобок). Эти правила охватывают большую часть программного кода на языке Рунтоп, который вы будете писать или с которым придется столкнуться. Однако существуют некоторые специальные правила, которые касаются оформления как отдельных инструкций, так и вложенных блоков.
Специальные случаи оформления инструкций Обычно на каждой строке располагается одна инструкция, но вполне возможно для большей компактности записать несколько инструкций в одной строке, разделив их точками с запятой: а = 1; ь = 2; ргтот а и ь Ф три инструкции на одной строке Это единственный случай, когда в языке РуЬйоп необходимо использовать точки с запятой: как разделители инструкций. Однако такой подход не может применяться к составным инструкциям. Другими словами, в одной строке можно размещать только простые инструкции, такие как присваивание, рг! лт и вызовы функций. Составные инструкции по-прежнему должны находиться в отдельной строке (нначе всю программу можно было бы записать в одну строку, что, скорее всего, не нашло бы понимания у ваших коллег!).
Другое специальное правило, применяемое к инструкциям, по сути является обратным к предыдущему: допускается записывать одну инструкцию в нескольких строках. Для этого достаточно заключить часть инструкции в пару скобок — круглых (()), квадратных (()) или фигурных (()).
Любой программный код, заключенный в одну из этих конструкций, может располагаться на нескольких строках: инструкция не будет считаться законченной, пока интерпретатор Ру(хоп не достигнет строки с закрывающей скобкой. Например, литерал списка можно записать так: э1151 = [111, 222, 333) Так как программный код заключен в пару квадратных скобок, интерпретатор всякий раз переходит на следующую строку, пока не обнаружит закрывающую скобку.
Словари также могут располагаться в нескольких строках, а с помощью круглых скобок можно оформить мно- лаз История о двух Ы гострочные кортежи, вызовы функций и выражения. Отступы в строках, где продолжается инструкция, в учет не принимаются, хотя здравый смысл диктует, что строки все-таки должны иметь некоторые отступы для обеспечения удобочитаемости. Круглые скобки являются самым универсальным средством, потому что в них можно заключить любое выражение. Добавьте левую скобку, и вы сможете перейти на следующую строку и продолжить свою инструкцию: Х=(А+В+ С+В) Между прочим, такой прием допускается применять и к составным инструкциям.
Если вам требуется записать длинное выражение, оберните его круглыми скобками и продолжите на следующей строке: тт (А == 1 апа В == 2 ааа С == 3); рыпт 'араа' * 3 Еще одно старое правило также позволяет переносить инструкцию на следующую строку: если предыдущая строка заканчивается символом обратного слеша: Х=А+В+т С+О Но зто устаревшее правило, которое не рекомендовано к использованию в новых программах, потому что символы обратного олеша малозаметны и ненадежны (не допускается наличие каких-либо других символов после символа обратного олеша).
Кроме того, зто рассматривается как пережиток языка С, где очень часто используются макроопределения Вбе1'1се; в Питонляндии нужно все делать так, как зто делают питонисты, а не как программисты на языке С. Специальный случай оформления блока Как уже говорилось выше, инструкции во вложенном блоке обычно объединяются по величине отступа. Специальный случай: тело составной инструкции может располагаться в той же строке, что и основная инструкция, после символа двоеточия: тт х > у, рттат х Это позволяет записывать в одной строке условные операторы, циклы и т.
д. Однако такой прием будет работать, только если тело составной инструкции не содержит других составных инструкций. То есть после двоеточия могут следовать только простые инструкции — инструкции присваивания, инструкции рттст, вызовы функций и подобные им. Крупные инструкции по-прежнему должны записываться в отдельных строках. Дополнительные части составных инструкций (такие 284 Глава 10, Введение в инструкции языка Ругбол как блоки е1вв в условных инструкциях т г, с которыми мы встретимся ниже) также должны располагаться в отдельных строках. Тело инструкции может состоять из нескольких простых инструкций, разделенных точкой с запятой, но такой стиль оформления не приветствуется. Вообще, хотя это не является обязательным требованием, но если вы будете размещать инструкции в отдельных строках и всегда будете оформлять отступы для вложенных блоков„ваш программный код будет проще читать и вносить в него изменения.
Чтобы увидеть одно из этих правил в действии (когда однострочная инструкция! Е используется для прерывания выполнения цикла), давайте перейдем к следующему разделу, где мы напишем и опробуем настоящий программный код. Короткий пример: интерактивные циклы Мы увидим все эти синтаксические правила в действии, когда будем совершать турне по конкретным составным инструкциям языка РуФЬоп в нескольких следующих главах, но зти правила работают одинаково везде в языке Ру1Ьоп.
Для начала рассмотрим короткий практический пример, который продемонстрирует способ применения синтаксических правил к оформлению инструкций и вложенных блоков на практике и попутно познакомит вас с некоторыми инструкциями. Простой интерактивный цикл Предположим, что от нас требуется написать программу на языке Ру1Ьоп, которая взаимодействует с пользователем в окне консоли. Возможно, программа будет принимать информацию для дальнейшей передачи в базу данных или числа для выполнения расчетов.
Независимо от конечной цели вам необходимо написать цикл, который будет считывать одну или более строк, введенных пользователем с клавиатуры, и выводить их обратно на экран. Другими словами, вам нужно написать классический цикл, выполняющий операции чтения/вычисления/вывода. В языке Ру1Ьоп для реализации таких интерактивных циклов используется типичный шаблон, который выглядит, как показано ниже: ият1е тгое: гер1у = гаи тпрот1'Ептег техт;') !т гер1у == 'втор': огеак ргтпт гер1у оррег() В этом фрагменте использованы несколько новых для вас идей: ° Программный код выполняется в цикле ия11е, который в языке РуФЬоп является наиболее универсальной инструкцией цикла.
Подробнее об инструкции иб)1е мы будем говорить позднее, но в двух словах замечу, что она состоит из слова ия11е, за которым следует условное выражение. Результат этого выражения интерпретируется как истина или как ложь. Далее следует вложенный блок про- Короткий пример: интерактивные циклы граммного кода, который продолжает выполняться в цикле, пока условное выражение возвращает истину (слово Тгае здесь всегда возвращает значение истины). ° Встроенная функция гак 1првт, с которой мы уже встречались ранее в этой книге, используется здесь как универсальное средство получения ввода с клавиатуры — она выводит подсказку, текст которой содержится в необязательном строковом аргументе, и возвращает введенный пользователем ответ в виде строки.
° Однострочная инструкция тт, которая оформлена в соответствии со специальным правилом для вложенных блоков: тело инструкции 1т располагается в той же строке, что и основная инструкция, после символа двоеточия, а не на отдельной строке под ней с соответствующим отступом. Она одинаково хорошо работала бы при любом из двух вариантов оформления, но при таком подходе нам удалось сэкономить одну строку. ° Наконец, для немедленного выхода из цикла использована инструкция эгеан — она просто выполняет выход за пределы инструкции цикла и программа продолжает свою работу с первой инструкции, которая расположена вслед за циклом.
Без этой инструкции цикл нвт1е работал бы вечно, поскольку его условное выражение всегда возвращает истину. В результате такая комбинация инструкций означает следующее: *читать строки, введенные пользователем, и выводить их после преобразования всех символов в верхний регистр, пока пользователь не введет строку "в1ор" а.