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

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

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

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

11пе() ве1(.с1егк.11пе() ве1Г. вос)ест. 1!пе( ) Ф Делегировать выполнение встроеннин и экэеипляраи Часть Ч)1. Исключения и инструменты Упражнения находятся в главе 29, в разделе»Упражнения к седьмой части». 1. 1гу/ехсер1. Ниже приводится моя версия функции оорв (файл оорз.ру). Что касается вопросов, не связанных с реализацией программного кода: если изменить функцию оорз так, чтобы вместо 1пбехЕг гог она возбуждала исключение КеуЕ г гог, то обработчик в инструкции Сгу не сможет перехватывать исключение (оно достигнет верхнего уровня и приведет к появлению сообщения об ошибке по умолчанию).

Имена КеуЕггог и 1пбехЕггог определены во встроенной области видимости. Импортируйте модуль Оот111п и передайте его функции 61 г, чтобы убедиться в этом: бет оорв(); га1ве 1пбехЕггог бет боозеб(): 1гу; оорв() ехсер1 1пбехЕггог: рг1пт 'саоолт ап (пбех еггогы е1ве: рг1пт 'по еггог саоолт...' паве == ' за1п '; боозеб() % руслоп оорз.ру саоож ап 1пбех еггог'.

МуЕггог = 'Пе11о' бе( оорз(): га1зе МуЕггог, 'ног)б' бе( боозеб(): ггу. оорв() ехсерг 1пбехЕггог: рг1п1 'савом ап 1пбех еггогы ехсер1 МуЕггог, баСа: рг1пг 'саоопг еггог:', муеггог, баса 2. Объекты исключений и списки. Ниже показано, как я дополнил модуль своим собственным исключением (для начала исключение определено в виде строки): 817 Решения упражнений е1ве: рг1п! 'по еггог саыцж ...

!Г паве == ' юа1п оооюео() % рузпоп оорв.ру саыцп! еггог: Пе11о ыог10 Чтобы идентифицировать исключение как класс, я просто изменил первую часть файла, как показано ниже, и сохранил его под име- нем оор сора.ру: с1авв ИуЕггог, рава бе( оорзО: гатзе МуЕггог() ...остальная часть осталась без изиенений... Как и в случае любого другого исключения на основе класса, в виде дополнительных данных передается сам экземпляр — теперь сооб- щение об ошибке содержит имя класса и указание на его экземпляр (<... >).

% рувпоп сор оорв.ру саыцлт еггог; юа1п,.яуЕггог < патп .МуЕггог тпв!апсе аг Ох00557550> !юрогт вув, !гасеоаск Ое( ва(е(еп!гу, *агре): Сгу: арр1у(ел!ту, агцв) ехсерс: тгасеьаск.рг!пт ехс() рг!и! 'бо!', вув.ехс туре, вув.ехс ча1ые Ф Перехватывать любые исключения !прог! оорв ва(е(оорв.оорв) % русаоп зауец,ру тгасеьасх (тппегпоз! 1аз!): Р11е "вате2.ру", 1!пе 5, тп вате арр1у(еп!гу, агцз) В Перехватывать любые исключения Ет1е "оорз.ру", 1тпе 4, тп оорз га1ве МуЕггог, 'яог1П' Не забывайте, что внешний вид сообщения можно улучшить, если определить метод герт или зтг в своем классе так, чтобы он возвращал нужную строку. Подробнее об этом рассказывается в главе 24.

3. Обработка ошибок. Ниже приводится мое собственное решение этого упражнения (файл ва7е2ру). Я добавил тесты непосредственно в файл, чтобы не проводить их в интерактивной оболочке, но результаты от этого не меняются. Приложение В Ье11о: ыог1б 6от пе1)о ыог)б Сегодня я реализовал бы эту функцию, как показано ниже, исполь- зуя новый синтаксис *агре и функцию ехс !про! бе( за(е(еп!гу, *агре): ггу; ел!ту(*агре) ехсерт; ггасеЬаси.рг1п! ехс() рг!п! 'Со!', вув.ехс 1пго()(0], вув.ехс 1пго()[!] Л Перехва тыла гь любые исключения а поиск наибольаего Файла е единстееннои каталоге б!главе = г'С:чгРуглоп2511!Ь' гарог! Оз, 910Ь а11в1гев = [] а11ру = 91оЬ.91оо(ов.рать.]огп(б!гпаае, '*.Ру )) Гог Г!1епаве гп а11ру: Гг!ее!ге = ов ра!П.ре!в!ге(Г!1епаае) а11вггев.аррепб((Г!1евгге, Г!1епаае)) а11з1гез.вогт() рггп! а11в1гев[:2] рг!п! а11в!гез[-2:] й Поиск наибольаего Файла е дерезе каталогов !арог! вув 1( вув р1а!Гога[гб] == 'ы!и': б1гпаае = г'С:)Ругооп25ч[!Ь' е1ве: б!гпаае = '/озг/11Ь/ру!Поп' 1арог! Ьз, 91ЬЬ апв!гев = [] тог (!и!вр!г, воьзнеге, (11евнеге) !п оз.на1и(б1гпаае): Гсг Г!1епаае гп Г11ЕВНЕГЕ: 1( (!1епаае.епбзы!!и('.Ру'): ГЬ11паае = ов.ра!Ь.)о!п(!Мв01г, (!1епаве) го11в1ге = оз.ра!ь.рета!ге(го11паве) а11в!гев.аррепб(((о11в!ге, Го11паае)) а1!ыгез.вогт() рггп! а11югез[:2] рггп! а11в!гев[-2:] й Поиск наибольаего Пайва с исходным программным кодои на лзике Ру!Ьоп й а пути поиска иодулей !арог! зув, оз, ррггпт 4.

Далее приводится несколько примеров для самостоятельного изучения на досуге; еще больше примеров программ на языке РуФ]гоп вы найдете в последующих книгах и в Сети: 819 Решения упражнений ч1з1!ес = () а11з!вез = [] (ог згсс!г 1п зуз.рась: (ог (1ь!зр!г, зиьзнеге, (!1езнеге) гп ов.на1к(згсс!г): !ьгз0!г = ов.ра(ь.легара!ь(гь!зр!г) !( !Ь!зргг.иррег() 1п ч!з!!ео.

солт!пие е1зе: ч!з!!ес[(Ь!зд!г.иррег()] = Тгие (ог (!1епаве !п (!1езнеге: г( Г!)епаае.елозя!(Ь( Ру ) рура!Ь = оз.ра(Ь,]о!и(!Ь!зр!г, (!1епаве) тгу: руз!ге = оз.рать.дега!ае(рурагь) Еховрг: Рг1п! 'зК1рргп9', аура!я а11з!вез.ароепб((руз!ае, Рурагп)) апз1хез.зог(() ррг!п!.Ррггп1(а11з!вез[:3]) ррг!и!.Ррг!п((а11з!вез[-Сп ]) в Сумма по столбцам, разделенныи запятыми, в текстовои Файле г[1епаве = 'сага.гх!' зиаз = () Гог !гпе [п орел(тг1епаие); со1з = 1!пе.зр1!!(',') пима = [1пг(со1) (ог со1 1п со1з] (ог (1х, пив) гп епивегате(пива): зивз[гх] = зиаз.де!(1х, О) ч пив Гог Хеу !п зогтес(зива): рг1п! Иеу, '=', зивз[ьеу] В То ве, что и выме, но суммы накапливается в списке, а не в словаре !врогг зуз г!1епаае = зув.агдч[1] пивсо1з = !п1(зуз.агдч[2]) гога1з = [О] ° пивсо1з (ог 1!пе !п орел((г1епаве): со1з = 1!пе.зр1!1(',') пийз "- [1п((х) гсг х !и со15] (о(а!з = [(х ь у) гог (х, у) гп а!Р(тога!з, пииз)] рг1п! (о(а1з В Регрессивное теотированив результатов работы нескольких сценариев 1арогт оз !ез!зсг!Р(з = [о!с1(зсггр!й'вез!1.Ру', агдз=''), о!с!(зсг!Рс='сез!2.ру', агдз='зрав')] Гог (ез!сазе 1п !ез!зсг!Ртз: Приложение В соввапо11пе = '%(всгсрс)в %(вгдв)в' % сев!саве ои1рис = ов.рореп(совввпб11пе).геас() геви1с = сев!саве['зсгсрс') г '.геви1с' !т пас ов.ра1п.ехсвсв(геви11): орел(гези11, 'и').иг!се(ои1рис) рг!пс 'Сгеасес:', геви1С е1ве; рг!оггеви11 = орел(геви11).геао() 11 оиСрис != рг1оггеви11; рг!п1 'РА1!ЕО:', Сезссазе['всгсрС') ргспс оисрис е1ве: ргспс 'Раввео:', севссаве['всгсрс') а Создание Гип с помощью ТК1п1ег; кнопка, иэиенявщая цвет и размер ГГОВ ТК1ПСЕГ 1ВРОГ1 * сврогс галсов гоп!в!се = 25 со1огв = ['геб', '9гееп', иЫие', 'уе11ам', 'огапде', 'нп11Е, 'суап', 'ригр1е ] ОЕС гЕР1у(СЕхт): ргсп1 сех1 рорир = Тор1еие1() со1ог = галсов.ело!се(со1огв) Еасе1(рорир, секс='Рорир', Ьд='Ь1асК', Гд=со1ог).расК() Ы соя!19(тд=со1ог) Оет 11вег(): [,солт!9(!9=галсов.ело!се(со1огв)) н!п,атсег(250, 11вег) оег дгом(): 910Ьа1 Госсе!Хе тоссе!Хе г= 5 Е.сопгсд(гоп!=('аг!а)', госсе!Хе, 'сса11с')) нсп.агсег(100, дган) нсп = ТК() 1 = Сесе!(м!и.

Сех1='Зрав', !опт=( агса1, гопсв!Хе, '!са11с ), Гд='уе11он', Ьд='поту', ге11еГ=ПА1ВЕО) Е.расК(в!се=ТОР, ехрапб=уЕВ, Г!П=ВОТН) Виссоп(мсп, 1ехс='ргевв', соввапс=(1авЬОа; гер1у('гес'))).расК(в1се=ВОТТОМ, С!11=Х) Виссоп(н1п, 1ехс='1!вег', соввепо=!свет).раск(в!ое=ВОттОм. 1111=х) Ви11оп(н1п, 1ехс='дгон', соввапс=дгом).расК(з1се=ВОТТОМ, 11!1=Х) н!п.васо!сор() В То же, что и виве, но на основе классов, поэтому каждое окно может в ииеть свое собственную информацию о состоянии Ггов Тхсптег !враг! сврогс галсов Решения упражнений с1азз Иубц(: ГИП с кнопками, которые изменяют цвет и размер надписи со1огз = ['Ь)це', 'дгееп', 'огапде', 'геб', Ьгоип', 'уе11ои'] бет тп1т (зе1(, рагепт, ттт1е='рорцр'): регент.т(т)е(т(т)е) зе)т,дгои1пд = Еа)зе зе1(.уоптз1ае = 10 зе1(.1аь = еаьецрагепт, техт='Оц11', гд='иыте', ьд='паху') зе1Г.

1аЬ раск(ехрапб=уЕБ, (111=ВОТИ) Во(топ(рагепт, техт='Брам'. совпало=зе1г.гер1у).раск(з1ое=ееет) Во(топ(рагепт, техт='Огои', сомюапс=зе1(.дгои).раск(зтсе=(ЕРТ) Вот(оп(рагепт, техт='Втор', соющапо=зе1(,втор).раск(з1оеГеерт) Оет гер1у(зе1Г): " при нажатии кнопки Брам изменяет цвет случайным образом " зе1(.(опта(ае += 5 со1ог = гапбощ.спо1се(зе)г.со1огз) зе1(,1аЬ. соп(19(Ьд=со1ог, тост=('соцгтег', зе1(.(остатке, 'Ьо1б [та1гс')) Оет дгои(зе1(): "при нажатии кнопки бгои начинает увеличивать размер надписи" зе1(,дгои[пд = Тгце зе1(.дгоиег() Оет дгоиег(зе1(): [Г зе1(.дгоитпд: зе1(.гопга1ге += 5 зе1Г. 1ао.сопутд((опт=('соцг1ег', зе1(.топ(в(ае, 'Ьо10')) зе1(.1ао.а(тег(500, зе1(.дгоиег) бе( втор(зе)Г): "при нажатии кнопки Втор останавливает увеличение размера" зе1(,дгоигпд = Еа1зе с1азз Мубцобц((Мубц!): со1огз = ['Ь)аск', 'рцгр1е'] № Настройка изменения цвета Мубцт(ТК(), 'юа[п') Мубц1(Тор1ече1() ) МубцЬбц1(Тор1еуе1() ) щатп1оор() № Сканирование и обслуживание ящика электронной почты Проверяет ящик входящей электронной почты, извлекает заголовки писем, позволяет удалять сообщения, не загружая их полностью 1мрогт рор1ть, де(раза, зуз ща[1зегуег = 'здесь требуется указать имя почтового сервера рор' № рор.

гмт. пег 822 Приложение В аа11цвег = 'здесь требуется указать имя пользователя' № Ьгсал аа11раввыс = детравз.де!рава('Равзыого Сот %в?' % аа11вегчег) ргспс 'СоппесСспд,..' вегчег = рор11Ь.РОРЗ(аас1вегчег) вегчег.цвет(аас1цвег) вегчег рава (аас1раввыс) сгу; рг1пС вегчег.десые1соае() авдСоцпС, испив!се = вегчег вСаС() рг1пС 'Тпеге аге', авдСоцпс, 'аа11 аеввадев, в!ге ', аЬохвсае авд!псе = вегчег. 1свс() ргспс авд1пто Сот с сп галде(авдСоцпс); авдпца = с+1 авда!Се = авдспсо[1 Ц 1].вр11с()[1] гевр, ьог11пев, оссесв = вегчег.сор(авдпца, 0) в 6ес ьогв оп1У ргспс '-'*80 рг!пс '[%О: оссесв=%0, в!се=%в]' % (авдпоа, оссесв, авда!ге) Саг 11пе сп Псг1спев.

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

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

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

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