Главная » Просмотр файлов » Марк Лутц - Изучаем Python, Четвертое издание

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 99

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 99 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 992020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Раз уж мызанялись изучением необычных инструкций, заодно рассмотрим здесь частьelse, потому что она некоторым образом связана с инструкцией break, и заоднопустую инструкцию-заполнитель pass (которая не имеет прямого отношенияк циклам, а относится к категории простых инструкций, состоящих из одногослова).

В языке Python:breakПроизводит переход за пределы объемлющего цикла (всей инструкции цикла).continueПроизводит переход в начало цикла (в строку заголовка).passНичего не делает: это пустая инструкция, используемая как заполнитель.Блок elseВыполняется, только если цикл завершился обычным образом (без использования инструкции break).Общий формат циклаС учетом инструкций break и continue цикл while в общем виде выглядит, какпоказано ниже:while <test1>:<statements1>if <test2>: break# Выйти из цикла, пропустив часть elseif <test3>: continue # Перейти в начало цикла, к выражению test1else:<statements2># Выполняется, если не была использована# инструкция ‘break’Инструкции break и continue могут появляться в любом месте внутри тела цикла while (или for), но как правило, они используются в условных инструкцияхif, чтобы выполнить необходимое действие в ответ на некоторое условие.395break, continue, pass и elseОбратимся к нескольким простым примерам, чтобы увидеть, как эти инструкции используются на практике.passИнструкция pass не выполняет никаких действий и используется в случаях,когда синтаксис языка требует наличия инструкции, но никаких полезныхдействий в этой точке программы выполнить нельзя.

Она часто используетсяв качестве пустого тела составной инструкции. Например, создать бесконечный цикл, который ничего не делает, можно следующим образом:while 1: pass# Нажмите Ctrl-C, чтобы прервать цикл!Поскольку тело цикла – это всего лишь пустая инструкция, интерпретатор«застрянет» в этом цикле. Грубо говоря, pass в мире инструкций – это то же,что None в мире объектов, – явное ничто. Обратите внимание, что тело этогоцикла while находится в той же строке, что и заголовок, после двоеточия. Каки в случае с инструкцией if, такой прием можно использовать только в случае,когда тело цикла образует несоставная инструкция.Этот пример вечно делает «ничто».

Вероятно, это самая бесполезная программа (если только вы не хотите погреться у своего ноутбука в холодный зимнийдень!), которая когда-либо была написана на языке Python, и, тем не менее,я не смог придумать лучший пример применения инструкции pass.Далее мы увидим, где эта инструкция может использоваться с большим смыслом, например, для того, чтобы игнорировать исключение в инструкции try,или для определения пустых классов, реализующих объекты, которые ведутсебя подобно структурам и записям в других языках. Иногда инструкция passиспользуется как заполнитель, вместо того, «что будет написано позднее»,и в качестве временного фиктивного тела функций:def func1():pass# Реализация функции будет добавлена позжеdef func2():passЗадание пустого тела функции вызовет синтаксическую ошибку, поэтому в подобных ситуациях можно использовать инструкцию pass.Примечание, касающееся различий между версиями: В версииPython 3.0 (но не в 2.6) вместо любого выражения допускаетсяиспользовать многоточие ...

(буквально, три точки, следующиедруг за другом). Многоточие само по себе не выполняет никакихдействий, поэтому его можно использовать как альтернативуинструкции pass, в частности вместо программного кода, который будет написан позднее, – своего рода примечание «TBD» (ToBe Done – подлежит реализации) на языке Python:def func1():...def func2():...func1()# Альтернатива инструкции pass# При вызове не выполняет никаких действий396Глава 13.

Циклы while и forМноготочие может также присутствовать в одной строке с заголовком инструкции и использоваться для инициализациипеременных, когда не требуется указывать значение какого-тоопределенного типа:def func1(): ...def func2(): ...# Может также присутствовать в той же строке>>> X = ...>>> XEllipsis# Альтернатива объекту NoneТакая форма записи впервые появилась в версии Python 3.0(и может использоваться гораздо шире своего основного предназначения – в расширенных операциях извлечения среза).Возможно, со временем в подобных ситуациях многоточие получит более широкое распространение, чем инструкция passи объект None.continueИнструкция continue вызывает немедленный переход в начало цикла.

Она иногда позволяет избежать использования вложенных инструкций. В следующемпримере инструкция continue используется для пропуска нечетных чисел. Этотфрагмент выводит четные числа меньше 10 и больше или равные 0. Вспомним,что число 0 означает ложь, а оператор % вычисляет остаток от деления, поэтомуданный цикл выводит числа в обратном порядке, пропуская значения, не кратные 2 (он выводит 8 6 4 2 0):x = 10while x:x = x-1if x % 2 != 0: continueprint(x, end=’ ‘)# Или, x -= 1# Нечетное? – пропустить выводТак как инструкция continue выполняет переход в начало цикла, нам не потребовалось вкладывать инструкцию print в инструкцию if – она будет задействована, только если инструкция continue не будет выполнена.

Если она напоминает вам инструкцию «goto», имеющуюся в других языках, то это справедливо. В языке Python нет инструкции «goto», но так как инструкция continueпозволяет выполнять переходы внутри программы, большинство замечаний,касающихся удобочитаемости и простоты сопровождения, которые вы моглислышать в отношении инструкции «goto», применимы и к инструкции continue. Не злоупотребляйте использованием этой инструкции, особенно когда вытолько начинаете работать с языком Python. Например, последний пример выглядел бы понятнее, если бы инструкция print была вложена в инструкцию if:x = 10while x:x = x-1if x % 2 == 0:# Четное? - вывестиprint(x, end=’ ‘)break, continue, pass и else397breakИнструкция break вызывает немедленный выход из цикла.

Так как программный код, следующий в цикле за этой инструкцией, не выполняется, если этаинструкция запущена, то ее также можно использовать, чтобы избежать вложения. Например, ниже приводится простой интерактивный цикл (вариантболее крупного примера, рассматривавшегося в главе 10), где производитсяввод данных с помощью функции input (raw_input в Python 2.6) и производитсявыход из цикла, если в ответ на запрос имени будет введена строка «stop»:>>> while 1:...name = input(‘Enter name:’)...if name == ‘stop’: break...age = input(‘Enter age: ‘)...print(‘Hello’, name, ‘=>’, int(age) ** 2)...Enter name:melEnter age: 40Hello mel => 1600Enter name:bobEnter age: 30Hello bob => 900Enter name:stopОбратите внимание, как в этом примере выполняется преобразование строкиage в целое число с помощью функции int, перед тем как возвести его во вторуюстепень.

Как вы помните, это совершенно необходимо, потому что функция input возвращает ввод пользователя в виде строки. В главе 35 вы увидите, чтофункция input также возбуждает исключение при получении символа концафайла (например, когда пользователь нажимает комбинацию клавиш Ctrl-Zили Ctrl-D).

Если это может иметь влияние, оберните вызов функции input инструкцией try.elseПри объединении с частью else инструкция break часто позволяет избавитьсяот необходимости сохранять флаг состояния поиска, как это делается в других языках программирования. Например, следующий фрагмент определяет,является ли положительное целое число y простым числом, выполняя поискделителей больше 1:x = y // 2# Для значений y > 1while x > 1:if y % x == 0:# Остатокprint(y, ‘has factor’, x)break# Перешагнуть блок elsex -= 1else:# Нормальное завершение циклаprint(y, ‘is prime’)Вместо того чтобы устанавливать флаг, который будет проверен по окончаниицикла, достаточно вставить инструкцию break в месте, где будет найден делитель.

При такой реализации управление будет передано блоку else, толькоесли инструкция break не была выполнена, то есть когда с уверенностью можносказать, что число является простым.398Глава 13. Циклы while и forБлок else цикла выполняется также в том случае, когда тело цикла ни разу невыполнялось, поскольку в этой ситуации инструкция break также не выполняется. В циклах while это происходит, когда первая же проверка условия в заголовке дает ложное значение. Вследствие этого в предыдущем примере будетполучено сообщение «is prime» (простое число), если изначально x меньше илиравно 1 (то есть, когда y равно 2).Этот пример определяет простые числа, но недостаточно точно.Числа, меньшие 2, не считаются простыми в соответствии сострогим математическим определением.

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

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

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

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