Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 48

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

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

тогаас() ва метода зсг. Тогаас(). В шаблоне НТМЕ ТЕМРЕАТЕ в качестстр. 100 ве замещаемых полей мы использовали не числовые индексы, а имена, например, (С111е). Ниже мы увидим, что для передачи значений в эти поля нам необходимо будет использовать именованные аргументы. о1взв Сапсе11ебЕггог(Ехсерт1оп): разе Затем определяется нестандартное исключение; мы встретимся с ним в паре функций программы. Функция ва1п() программы устанавливает некоторые начальные значения и входит в цикл.

На каждой итерации пользователю предлагается ввести некоторую информацию о странице НТМТ, которая будет сгенерирована, и после создания каждой страницы предоставляется возможность завершить программу. бег ветл(); !пгогвас1оп = б1сс(паве=мопе, уеаг=басессае.басе.собву().уеаг, Г>1епаве=аопе, С!11е=Мопе, безсг!Ртсоп=Иоле, Кеупогбз=аопе, зту1езяееС=Моле) аы 1е Тгое: сгу: ргспс("Хпмаке нтмс зке1есопХп") роро1ате 1птогаат!оп(со!ответ!оп) ваКе ПСИ1 зхе1етоп(*.со!агав!!оп) ехсерс Сапсе11ебЕггог: рыпт("Сапсе11еб") 1( (цес зсг!пц("Хпсгевсе зпоспег (у/и)?", бетао1сы'у"). 1оаег() Пример: гпаКе Ь(гп( яКе(е1оп.ру 221 пс1 1п ("у", "уея")): Ьгеап Функция ба1е11ае. бз1е. 1обзу() возвращает объект бз1е11ве. ба1е, который хранит текущую дату.

Нам требуется лишь значение атрибута уеаг этого объекта. Во все остальные элементы данных записывается значение (!опе, так как для них не существует разумных значений по умолчанию. В цикле вп!1е программа выводит заголовок и вызывает функцию рорб1а1е !Ь(огаз1!оп(), передавая ей словарь !Ьгогвз1!оп. Внутри функции рорб1а1е !п10гаа11оп() производится заполнение этого словаря. Затем вызывается функция ааКе Ьта1 яКе1е10п(), она принимает большое число аргументов, но чтобы явно не указывать значение каждого из них, мы просто распаковываем словарь !Ьгс газ!!оп.

Если пользователь прерывает процесс создания заготовки страницы, например, отказом от ввода обязательного значения, программа выводит сообщение «Сансе!!ег[» (отменено). В конце каждой итерации (независимо от того, было ли отменено создание заготовки страницы или нет) пользователю задается вопрос: не желает ли он создать еще одну заготовку. Если пользователь отвечает отказом, производится выход из цикла и программа завершает работу. бе( рсрс1яге !Ьгсгаяг!сп(!Ь(сгваггсп): паве = де1 ягг1пд("еп1ег уссг паве (гсг ссруг!дьт)", "паве", »п(сгвя1!оп["паве"]) !( пс1 паве: гя!яе Сяпсе1!ебЕггсг() уеаг = 9е1 1п1едег("Еп1ег ссруг!9пя уеяг", "уеяг", !Ь(сгвя1!сп["уеяг"], 2000, баге11ве.бя(е.1сбау().уеаг + 1, Тгсе) !( уеяг == 0; га!яе Сапсе1!ебЕггсг() (г1епаве = де1 яггшд("Ешег Г!1епаае", "Г!1епяве") !( пс1 (!1епяае: гале Сапсе11ебЕггсг() !( пс1 (!1епаае.епбяв!1ь((".ь1а", ".ь(в!")): Гг1епяве «= ".Ьгв1" !Ьусгваг!сп.србаге (паве=паве, уеаг=уЕаг, Г!1епяве=(!1епяве, 1г11е=1!11Е, бЕЯСг1Р1!СП=бЕЯСг!р11яп, Кяу«пгбз=пеувогбз, Ягу1ЕЯЬеЕ(=я1у1еЯЬее1) Мы опустили программный код, который запрашивает заголовок и текст описания, ключевые слова НТМ( и имя файла с таблицами стилей.

Во всех этих случаях используется функция де1 я1г!пд(), которую мы увидим очень скоро. Достаточно лишь отметить, что эта функция принимает текст вопроса, «имя» соответствующей переменной (для вывода в сообщении об ошибке) и необязательное значение по умолчанию. Точно так же функция де1 1п1едег() принимает текст вопроса, гг~ Глава 4. Управляющие структуры и функции имя переменной, значение по умолчанию, минимальное и максималь- ное значения, а также признак — допустимо ли значение О. В конце функция заполняет словарь 1пгогаат1оп новыми значениями, используя именованные аргументы. В каждой паре Кеу=уа100 имя Кеу соответствует имени ключа в словаре, значение которого замещается указанным значением уа1ие, и в данном случае каждое значение уа)ие является переменной с тем же именем, что и соответствующий ей ключ словаря.

Эта функция не имеет явного возвращаемого значения (поэтому она возвращает значение Ноле). Она может также завершаться в случае появления исключения Сапсе11еОЕггог, в этом случае исключение будет передано вверх по стеку вызовов и обработано в функции за !п( ). Функцию ваке Нтэ1 аке1етоп() мы рассмотрим в два этапа. пег паке пта1 аке1етсп(уааг, паве, !!!10, аеасг1рттоп, кеуиогаа, ату1еапает, г!1епааа): соругтдлт = СОРУЯ10нт темРЕАТЕ.гагаат(уааг, ха1.аах.аахитт1а.еасара(папе)) тт(1е = ха1,аах.ваха!!1а.еасаре(т!11е) ааасгтрт1оп = ха1.аах.аахатт1а.еасаре(0аасгтрт!оп) кауиогаа = ",".)отп([ха1.аах.аахртт1а,еасаре(к) гог к тп кеуиогаа)) !г кеуиогаа е1аа ату1аапеет = (зту(еБнеет теиР!Ате,гола!(ату1еапеет) !Г ату1ааяеет 01ае "") пта1 = нти( темР(Ате.тогаат(т!11е=ттт1е, соругтдпт=ссруыдж, сеасг!Рттоп=ааасгтрттоп, Кауиогаа=кеуггогаа, ату1еааает=агу)ааяеат) Чтобы получить текст с указанием авторских прав, мы вызываем метод а! г, (агэат() для строки сОРун[6нт темр[Ате, передавая год и имя (дополнительно выполняя экранирование служебных символов НТМЬ) в виде позиционных аргументов для замены полей (О) и (1) .

В тексте заголовка и описания мы просто экранируем служебные символы НТМ1 . В случае ключевых слов у нас может быть два варианта действий, которые реализуются с использованием условного выражения. Если ключевые слова не были введены, то в качестве значения переменной Кеуиог00 будет использоваться пустая строка. В противном случае с помощью генератора списков выполняется обход всех ключевых слов и создается новый список строк, в каждой из которых выполняется экранирование служебных символов НТМЬ.

После этого, с помощью метода в!г.)о1п(), мы объединяем элементы списка в единую строку, разделяя их запятыми. Текст переменной вту1еаяеет создается аналогичным способом, что и текст с указанием авторских прав, но с применением условного выражения, чтобы в случае отсутствия имен файлов таблиц стилей получалась пустая строка. Пример: птаИе )тспт) Йе)есоп.ру 223 Текст для переменной )тсв1 создается из шаблона ИТИЕ Метод асг. ТЕИРЕАТЕ, где для передачи данных в замещаемые поля го,васИ используются не позиционные аргументы, как в других стр.

!00 строках шаблонов, а именованные. СП = Ионе сгу. сп = ореп(111епаве, "в", епооо!пд="нс(8") Го.вг!Се(отв)) ехоерт ЕпусгопвепСЕггог аа егг. рг!пт("ЕННОН", егг) е)ае: рг!пс("Нанео ахе1есоп", спепаве) т!па11у: 1Г ГП !а поС Ионе: то.о1оае() Как только заготовка файла КТО будет готова, мы записываем ее в файл с заданным именем. После етого пользователь извещается, что файл заготовки был сохранен, или выводится сообщение об ошибке, если что-то пошло не так.

Как обычно, чтобы гарантировать закрытие файла, если он был открыт, используется предложение г!па11у. оет цес ыг1пд(веаааде, паве="асг1пц", оегаи1с=иопе, всп1вив 1епдСП=О, вахюнв 1епдСП=80). веаааде в= ", " сс оегаи11 та иопе е1ае " Г(0)); ".(огвас(оеган11) ва!1е Тгне: сгу: 1спе = !при!(веаааде) сс пот 11пе; !г оетан1С та пот Ионе.' геснгп оеган1с сс в1псвнв 1епдСП == 0: геснгп "" е1ае; га!ае на1иееггог("(О) вау пос ье еврсу".гогвас( паве)) ст пос (в1п!вив 1епдсп <= 1еп( 1!не) <= вах!вив 1епдсп): гасае на1иееггог("(0) внес пане ас 1еаас (1) апо " "ас вовс (2) опагаосега".гогвас( паве, в!п1вив 1епцсп, вах!вив 1епдсп)) гетигп 11пе ехсерт На1неЕггог аа егг, рг1пС("ЕННОН", егг) Функция имеет один обязательный аргумент веаааде и четыре необязательных аргумента.

Если значение аргумента Оесан1С определено, оно включается в строку веаааде, чтобы пользователь мог видеть значение по умолчанию, которое будет использоваться, если он просто нажмет клавишу ЕНСег, не вводя никакого текста. Остальная часть функции заключена в бесконечный цикл. Цикл может быть прерван вводом 224 Глава 4. Управляющие структуры и функции допустимой строки или в результате простого нажатия клавиши Елсег, когда используется значение по умолчанию (если определено). Кроме того, пользователь может прервать цикл и завершить работу программы, нажав комбинацию клавиш С1г1+С, — в этом случае возбуждается исключение КеуЬоаг01птеггорт, но так как это исключение не обрабатывается ни одним из обработчиков, имеющихся в программе, это приведет к завершению программы с выводом диагностической информации.

Следовало ли оставлять такую возможность прерывать цикл? Если бы мы этого не сделали и в программе обнаружилась бы ошибка, мы ие оставили бы пользователю никакой возможности прервать работу программы, кроме как уничтожить процесс. Если нет достаточно веских причин препятствовать завершению программы по нажатию комбинации С(г(+С, не следует обрабатывать это исключение ни в одном из обработчиков. Примечательно, что эта функция достаточно универсальна и может использоваться не только в программе тале Мт( а)ге(етоп.ру, но и во многих других интерактивных программах подобного типа.

Такого многократного использования функции можно было бы добиться простым копированием текста, но такой прием может стать источником головной боли для того, кто будет сопровождать программы, В следующей главе мы узнаем, как создавать собственные модули, вмещающие функциональные возможности, которые могут совместно использоваться большим числом программ. оег дет 1птедег(аеаэаде, паяеычптедег", оегаи11Гяопе, а1пгаоя=о, аактэов=100, а11он гего=тгие): Эта функция по своей структуре настолько близка к функции дет втг1пд( ), что нет необходимости воспроизводить ее здесь. (Безусловно, эта функция присутствует в исходных текстах примеров к книге.) Параметр а11он лего может быть полезен, когда 0 не является допустимым значением, но когда желательно обеспечить возможность ввода ошибочного значения, чтобы предоставить способ прервать процедуру создания заготовки.

Другой способ, который можно было бы использовать, заключается в том, чтобы определить недопустимое значение в качестве значения по умолчанию; тогда возврат такого значения означал бы, что пользователь отменил операцию. Последняя инструкция в программе — это простой вызов функции за1п(). Общий объем программы составляет чуть больше 150 строк, иона демонстрирует некоторые особенности языка РУ1)топ, которые были представлены в этой и в предыдущих главах. В заключение В заключение В этой главе мы рассмотрели полный синтаксис всех управляющих структур языка Ру1Ьоп. Здесь также было показано, как возбуждать и обрабатывать исключения и как создавать свои типы исключений.

Большая часть главы была посвящена созданию собственных функций. Мы увидели, как создаются функции, познакомились с некоторыми правилами выбора имен для функций и их параметров. Мы также увидели, как можно добавлять описание функций. Подробно был рассмотрен универсальный синтаксис определения параметров и передачи аргументов в языке Ру1)зоп, включая возможность передачи фиксированного и переменного числа позиционных и именованных аргументов, а также возможность определения для аргументов значений по умолчанию — как неизменяемых, так и изменяемых типов.

Кроме того, мы коротко повторили порядок использования оператора распаковывания последовательностей ° и показали, как выполнять распаковывание отображений с помощью оператора * ° . Когда возникает необходимость присвоить глобальной переменной новое значение внутри функции, она должна быть объявлена с помощью инструкции В1оба1, чтобы предотвратить создание оператором присваивания новой локальной переменной. Однако вообще глобальные переменные лучше использовать только в качестве констант. Лямбда-функции часто используются в качестве значения аргументов других функций или в других случаях, где функция должна передаваться в виде параметра.

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

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

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

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