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

Лутц М. - Изучаем Python (1077325), страница 82

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 82 страницаЛутц М. - Изучаем Python (1077325) страница 822018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В результате будет открыта веб-страница, содержащая ссылки на описания всех модулей, доступных вашей программе. б. Мои, конечно. (А если серьезно, в предисловии имеется перечень некоторых книг, как справочных пособий, так и учебников, рекомендуемых для дальнейшего прочтения.) Упражнения к третьей части Теперь, когда вы узнали, как описывается логика работы программы, в следующих упражнениях вам будет предложено реализовать решение некоторых простых задач с использованием инструкций. Самым большим является упражнение 4, где вам будет предложено рассмотреть альтернативные варианты реализации. Одна и та же задача всегда может быть решена разными способами и отчасти изучение языка Ру- $)«оп заключается в том, чтобы находить более оптимальные решения.

Решения приводятся в приложении В, в разделе «Часть П1, Инструкции и синтаксис». 1. Основы циклов. а. Напишите цикл Гог, который выводит АЯСП-коды всех символов в строке с именем Я. Для преобразования символов в целочисленные АЯСП-коды используйте встроенную функцию о гб( сна гас се г ) . (Поэкспериментируйте с ней в интерактивной оболочке, чтобы понять, как она работает.) Ь. Затем измените цикл так, чтобы он вычислял сумму кодов АЯСП всех символов в строке.

с. Наконец, измените свой программный код так, чтобы он возвращал новый список, содержащий АЯСП-коды всех символов в строке. Дает ли выражение азр(огб, 8) похожий результат? (Подсказка: прочитайте четвертую часть.) 2. Сил«волы обратного олеша. Что произойдет, если в интерактивной оболочке ввести следующий программный код? гог г и гапэе(50); Рг1ж 'Пе11о ьзуп1а' % 1 Будьте осторожны при запуске этого примера не в среде П)ЬЕ, он может сгенерировать звуковой сигнал, что может не понравиться окружающим. Среда разработки ПЗЬЕ вместо этого выводит малопонятные символы (символы, экранированные обратным слешем, приводятся в табл, 7.2).

3. Сортировка словарей. В главе 8 мы видели, что словари представляют собой неупорядоченные коллекции. Напишите цикл гог, который выводит элементы словаря в порядке возрастания. Подсказка: используйте метод Кеуэ словаря и метод списка зогг или новую встроенную функцию вог1ес. 382 Глава 14. Документация 4. Програмэеирование альтернативной логики. Изучите следующий фрагмент, где для поиска числа 2 в пятой степени (32) в списке степеней числа 2, используются цикл ия11е и флаг (сслс. Этот фрагмент хранится в файле рошег ру. (1, 2, 4.

б, 15, 32, 54] Х=5 гоопс = т = 0 еят1е пот Гоияс еле т < 1еп(б): 11 2 ** Х == т(т] горло = 1 е1зе; т = те1 тг гооло; рг1пт 'ет тпсех', е1зе рг1от х, 'пот гоооо' с Хооокхтезте> рутяоя роеег.ру ат тпеех 5 В этом примере не используются обычные приемы программирования, принятые в языке Ру(Ьоп. Следуя указаниям ниже, попробуйте улучшить его (вы можете вносить изменения в интерактивной оболочке или сохранять в файле сценария и запускать его из командной строки системы — использование файла существенно упростит это упражнение): а.

Сначала добавьте в цикл илт1е блок е1зе, чтобы избавиться от флага гоцпг] и последней инструкции 11. Ь. Затем перепишите пример с циклом бог и блоком е1зе, чтобы избавиться от логики вычисления индексов в списке. Подсказка: получить индекс элемента можно с помощью метода тлоех ((..

1лт]ех(Х)), возвращающего смещение первого элемента со значением Х в списке. с. Затем вообще избавьтесь от цикла, реализовав решение на основе оператора (л проверки вхождения. (Подробности вы найдете в главе 8 или попробуйте ввести такое выражение: 2 ш (1,2,3].) г(. Наконец, вместо литерала списка ( используйте цикл бог и метод аррелб для заполнения списка степеней двойки.

Более глубокие улучшения: е. Как вы думаете, повысится ли производительность, если выражение 2 ** Х вынести за пределы циклов? Как это можно сделать? Как мы видели в упражнении 1, Ру(Ьоп включает в себя функцию вар(тслсттоп, 11зт), которая может создать список степеней числа 2: езр(1агбсз х; 2 ** х, галсе(7)). Попробуйте выполнить этот программный код в интерактивной оболочке; с инструкцией 1азооа мы познакомимся в главе 17. Основы функций В третьей части книги мы рассмотрели основные процедурные инструкции языка Ру1поп.

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

Благодаря функциям можно существенно уменьшить трудозатраты на программирование: если операцию необходимо будет видоизменить, достаточно будет внести изменения всего в одном месте, а не во многих. Функции — это самые основные программные структуры в языке РуФоп, обеспечивающие многократное использование программного кода и уменьшающие его избыточность. Как будет показано далее, функции — это еще и средство проектирования, которое позволяет разбить сложную систему на достаточно простые и легко управляемые части.

В табл. 15.1 приводятся основные инструменты, имеющие отношение к функциям, которые мы будем изучать в этой части книги. Глава 15. Основы функций 386 Таблица 1б.1. Инструкции и вь»ражения, имеющие отношение к функц ям Зачем нужны функции? Прежде чем перейти к обсуждению деталей, мы нарисуем себе четкую картину, что из себя представляют функции. Функции — это практически универсальное средство структурирования программы. Возможно, раньше вам уже приходилось сталкиваться с ними в других языках программирования, где они могли называться подпрограммами или процедурами.

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

Процедурная декомпозиция Функции также обеспечивают возможность разбить сложную систему на части, каждая из которых играет вполне определенную роль. Например, чтобы испечь пиццу, сначала нужно замесить тесто, раскатать его, добавить начинку, испечь и т. д. Если бы мы писали программу для машины по выпечке пиццы, мы могли бы общую задачу «испечь пиццу» разбить на мелкие части — по одной функции для каждого из этапов. Гораздо проще создать решение маленьких задач по отдельности, чем реализовать весь процесс целиком.

Вообще функции описывают «как делать», а не «зачем делать». В шестой части книги мы увидим, почему это различие имеет такое большое значение. 387 Создание функций В этой части книги мы исследуем понятия языка Ру1Ьоп, используемые при создании функций: основы функций, правила области видимости и передача аргументов, а также ряд сопутствующих концепций, таких как генераторы и функциональные инструменты. Мы также еще раз вернемся к понятию полиморфизма, введенному ранее в этой книге, поскольку на данном уровне его важность становится еще более очевидной. Как вы увидите, функции привносят не так много новых синтаксических конструкций, но они ведут нас к более существенным идеям программирования. Создание функций Несмотря на то, что функции еще не были представлены формально, тем не менее, мы уже использовали некоторые из них в предыдущих главах. Например, для создания объекта файла мы вызывали функцию ореп; точно так же мы использовали встроенную функцию 1ел, когда нам необходимо было узнать число элементов в объекте коллекции.

В этой главе мы узнаем, как создаются новые функции в языке Ру$Ьоп. Функции, которые мы пишем сами, ведут себя точно так же, как и встроенные функции, которые нам уже приходилось встречать: они могут вызываться в выражениях, получать значения и возвращать результаты. Но для того чтобы создавать новые функции, необходимо ввести дополнительные понятия. Кроме того, в языке Ру$Ьоп функции ведут себя иначе, чем в компилирующих языках программирования, таких как С. Ниже приводится краткое введение в основные концепции, составляющие основу функций в языке Ру$Ьоп, каждую из которых мы будем изучать в этой части книги: ° бег — это исполняемый программный код.

Функции в языке Ру1Ьоп создаются с помощью новой инструкции сег. В отличие от функций в компилирующих языках программирования, таких как С, Оеу относится к классу исполняемых инструкций — функция не существует, пока интерпретатор не доберется до инструкции сег и не выполнит ее. Фактически, вполне допустимо (а иногда даже полезно) вкладывать инструкции сег внутрь инструкций 1Г, циклов н1111е и даже в другие инструкции се1. В случае наиболее типичного использования инструкции Эе1 вставляются в файлы модулей и генерируют функции при выполнении во время первой операции импортирования. ° бег создает объект и присваивает ему имя.

Когда интерпретатор Ру$Ьоп встречает и выполняет инструкцию беГ, он создает новый объект-функцию и связывает его с именем функции. Как и в любой другой операции присваивания, имя становится ссылкой на объект-функцию. В имени функции нет ничего необычного — как будет показано далее, объект-функция может быть связан с несколькими именами, сохраняться в списке и т. д. Кроме того, функции могут создаваться с помощью выражения 1аэбса (более сложная концепция, которая будет рассматриваться в одной из последующих глав).

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

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

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

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