Главная » Просмотр файлов » М. Лутц - Изучаем Python (4-е издание)- 2011

М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 84

Файл №1126907 М. Лутц - Изучаем Python (4-е издание)- 2011 (М. Лутц - Изучаем Python (4-е издание)- 2011) 84 страницаМ. Лутц - Изучаем Python (4-е издание)- 2011 (1126907) страница 842019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 84)

Кроме того, это рассматриваетсякак пережиток языка C, где очень часто используются макроопределения #���define; в Питонляндии нужно все делать так, как это делают Питонисты, а не какпрограммисты на языке C.334Глава 10. Введение в инструкции языка PythonСпециальный случай оформления блокаКак уже говорилось выше, инструкции во вложенном блоке обычно объединяются по величине отступа.

Специальный случай: тело составной инструкцииможет располагаться в той же строке, что и основная инструкция, после символа двоеточия:if x > y: print(x)Это позволяет записывать в одной строке условные операторы, циклы и так далее. Однако такой прием будет работать, только если тело составной инструкции не содержит других составных инструкций. То есть после двоеточия могутследовать только простые инструкции – инструкции присваивания, инструкции print, вызовы функций и подобные им. Крупные инструкции по-прежнемудолжны записываться в отдельных строках.

Дополнительные части составныхинструкций (такие как блоки else в условных инструкциях if, с которыми мывстретимся ниже) также должны располагаться в отдельных строках. Тело инструкции может состоять из нескольких простых инструкций, разделенныхточкой с запятой, но такой стиль оформления не приветствуется.Вообще, хотя это не является обязательным требованием, но если вы будетеразмещать инструкции в отдельных строках и всегда будете оформлять отступы для вложенных блоков, ваш программный код будет проще читать и вносить в него изменения. Кроме того, некоторые инструменты профилированияоказываются неспособными справиться с ситуациями, когда несколько инструкций располагаются в одной строке или когда тело составной инструкцииоказывается на одной строке вместе с основной инструкцией.

Поэтому в вашихинтересах всегда стремиться оформлять программный код как можно проще.Чтобы увидеть одно из этих правил в действии (когда однострочная инструкцияif используется для прерывания выполнения цикла), давайте перейдем к следующему разделу, где мы напишем и опробуем настоящий программный код.Короткий пример: интерактивные циклыМы увидим все эти синтаксические правила в действии, когда будем совершатьтурне по конкретным составным инструкциям языка Python в нескольких следующих главах, но эти правила работают одинаково везде в языке Python. Дляначала рассмотрим короткий практический пример, который продемонстрирует способ применения синтаксических правил к оформлению инструкцийи вложенных блоков на практике и попутно познакомит вас с некоторыми инструкциями.Простой интерактивный циклПредположим, что от нас требуется написать программу на языке Python, которая взаимодействует с пользователем в окне консоли.

Возможно, программабудет принимать информацию для дальнейшей передачи в базу данных иличисла для выполнения расчетов. Независимо от конечной цели, вам необходимо написать цикл, который будет считывать одну или более строк, введенныхпользователем с клавиатуры, и выводить их обратно на экран.

Другими словами, вам нужно написать классический цикл, выполняющий операции чтения/вычисления/вывода.Короткий пример: интерактивные циклы335В языке Python для реализации таких интерактивных циклов используетсятипичный шаблон, который выглядит, как показано ниже:while True:reply = input(‘Enter text:’)if reply == ‘stop’: breakprint(reply.upper())В этом фрагменте использованы несколько новых для вас идей:•• Программный код выполняется в цикле while, который в языке Pythonявляется наиболее универсальной инструкцией цикла.

Подробнее об инструкции while мы будем говорить позднее, но в двух словах замечу, что онасостоит из слова while, за которым следует условное выражение. Результатэтого выражения интерпретируется как истина или как ложь. Далее следует вложенный блок программного кода, который продолжает выполнятьсяв цикле, пока условное выражение возвращает истину (слово True здесь все­гда возвращает значение истины).•• Встроенная функция input, с которой мы уже встречались ранее в этой книге, используется здесь как универсальное средство получения ввода с клавиатуры – она выводит подсказку, текст которой содержится в необязательном строковом аргументе, и возвращает введенный пользователем ответв виде строки.•• Однострочная инструкция if, которая оформлена в соответствии со специальным правилом для вложенных блоков: тело инструкции if располагается в той же строке, что и основная инструкция, после символа двоеточия,а не на отдельной строке под ней с соответствующим отступом.

Она одинаково хорошо работала бы при любом из двух вариантов оформления, но притаком подходе нам удалось сэкономить одну строку.•• Наконец, для немедленного выхода из цикла использована инструкцияbreak – она просто выполняет выход за пределы инструкции цикла и программа продолжает свою работу с первой инструкции, которая расположена вслед за циклом. Без этой инструкции цикл while работал бы вечно, поскольку его условное выражение всегда возвращает истину.В результате такая комбинация инструкций означает следующее: «читатьстроки, введенные пользователем,4 и выводить их после преобразования всехсимволов в верхний регистр, пока пользователь не введет строку “�����������stop�������”».

Существуют и другие способы записи такого цикла, но данная форма очень частовстречается в программах на языке Python.Обратите внимание, что все три строки, вложенные в инструкцию цикла while,имеют одинаковые отступы, благодаря этому они визуально образуют вертикальную линию блока программного кода, ассоциированного с инструкциейцикла while. Тело цикла завершается либо с концом файла, либо с первой инструкцией, имеющей меньший отступ.Запустив этот фрагмент, мы получили следующий порядок взаимодействийс ним:Enter text:spamSPAMEnter text:4242Enter text:stop336Глава 10.

Введение в инструкции языка PythonПримечание, касающееся различий между версиями: Этот пример написан для работы под управлением интерпретатора версии 3.0. Если вы используете Python 2.6 или более раннюю версию, этот пример будет работать точно так же, но вместо функции input вы должны использовать функцию raw_input и можетеопустить круглые скобки в инструкции print. В версии 3.0 функция raw_input была переименована, а инструкция print превратилась во встроенную функцию (подробнее об инструкции printрассказывается в следующей главе).Математическая обработка данных пользователяИтак, наш сценарий работает, а теперь предположим, что вместо преобразования символов текстовой строки в верхний регистр нам необходимо выполнитьнекоторые математические действия над введенными пользователем числами, – например, вычислить квадраты чисел, что может получиться не совсемтак, как ожидают наиболее молодые и нетерпеливые пользователи.

Для достижения желаемого эффекта мы могли бы попробовать использовать следующиеинструкции:>>> reply = ‘20’>>> reply ** 2...текст сообщения об ошибке опущен...TypeError: unsupported operand type(s) for ** or pow(): ‘str’ and ‘int’Этот прием не работает, потому что (как обсуждалось в предыдущей части книги) интерпретатор выполняет преобразование типов объектов в выражениях,только если они являются числами, а ввод пользователя всегда передается сценарию в виде строки.

Мы не можем возвести строку цифр в степень, не преобразовав ее в целое число вручную:>>> int(reply) ** 2400Вооружившись этой информацией, мы можем переделать наш цикл для выполнения математических действий:while True:reply = input(‘Enter text:’)if reply == ‘stop’: breakprint(int(reply) ** 2)print(‘Bye’)В этом сценарии используется однострочная инструкция if, которая, каки прежде, производит выход из цикла по получении от пользователя строки“������������������������������������������������������������������������stop��������������������������������������������������������������������”, а кроме того, выполняется преобразование введенной строки для выполнения необходимой математической операции.

В данную версию сценариятакже было добавлено сообщение, которое выводится в момент завершенияработы сценария. Поскольку инструкция print в последней строке не имеет такого же отступа, как инструкции вложенного блока, она не считается частьютела цикла и будет выполняться только один раз – после выхода из цикла:Enter text:24Короткий пример: интерактивные циклы337Enter text:401600Enter text:stopByeНебольшое примечание: я предполагаю, что этот фрагмент был сохраненв файле сценария и запускается из него. Если вы вводите этот программныйкод в интерактивном сеансе, не забудьте добавить пустую строку (то есть нажать клавишу Enter дважды) перед заключительной инструкцией print, чтобызавершить тело цикла. Впрочем, нет никакого смысла вводить последнюю инструкцию print в интерактивном сеансе (вы будете вводить ее уже после того,как завершите ввод чисел в цикле!).Обработка ошибок проверкой вводаПока все идет хорошо, но посмотрите, что произойдет, если пользователь введет неверную строку:Enter text:xxx...текст сообщения об ошибке опущен...ValueError: invalid literal for int() with base 10: ‘xxx’Встроенная функция int возбуждает исключение, когда сталкивается с ошибкой.

Если нам необходимо обеспечить устойчивость сценария, мы должныпредварительно проверить содержимое строки с помощью строкового методаisdigit:>>> S = ‘123’>>> T = ‘xxx’>>> S.isdigit(), T.isdigit()(True, False)Для этого в наш пример необходимо добавить вложенные операторы. В следующей версии нашего интерактивного сценария используется полная версияусловной инструкции if, с помощью которой предотвращается возможностьпоявления исключений:while True:reply = input(‘Enter text:’)if reply == ‘stop’:breakelif not reply.isdigit( ):print(‘Bad!’ * 8)else:print(int(reply) ** 2)print ‘Bye’Более подробно мы будем рассматривать инструкцию if в главе 12.

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее