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

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

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

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

ивегпаее = ((Г!е108[ЕОЛЕМАМЕ][0] и 11е1св[М100(ЕМАМЕ][:)] + Г!е108[808МАМЕ]).гер1асе("-", "").геР1асе("'", "")) ивегпаме = ог!д!па1 паве = ивегпаме[г8]. 1оиег() соим = ! мы1е ивегпаме !п ивегпамев: ивегпаме = "(0)(1)".Гогмаг(ог!д(па1 паве, соил!) соил! г= ! ивегпамев.аоо(ивегпаме) ге!игп ивегпаме При первой попытке имя пользователя создается путем конкатенации первого символа имени, первого символа отчества и фамилии целиком, после чего из полученной строки удаляются дефисы и апострофы.

Выражение, извлекающее первый символ отчества, таит в себе одну хитрость. Если просто использовать обращение Г!в108[М[00[ЕМАМЕ][О], то в случае отсутствия отчества будет возбуждено исключение ]псехЕггог. Но при использовании операции извлечения среза мы получаем либо первый символ отчества, либо пустую строку. Затем мы переводим все символы полученного имени пользователя в нижний регистр и ограничиваем его длину восемью символами.

Если имя пользователя уже занято (то есть оно уже присутствует в множе- Примеры 179 стве озегпваез), предпринимается попытка добавить в конец имени пользователя символ «1», если это имя пользователя тоже занято, тогда предпринимается попытка добавить символ «2» и т. д., пока не будет получено незанятое имя пользователя. После этого имя пользователа добавляется в множество озегпзаез и возвращается вызывающей программе. овг рмпс оввгв(овегв): паае»1осп = 32 оввгпвав»1ПСП = 9 ргспс("(О:<(па)) (1: 6) (2:(оа))".Гогааг( 'йаав", "10", "Овегпвав", па=папе»!с!в, ои=овегпааеи!Осп)) рг!пс("(О;-<(па)) (О:-<6) (О:-<(оа))".(огавс( пи=паае»1ссп, оа=оввгпааваспсп)) гог зеу !и вогсеп(оввгв); пвег = овегв[веу] 1пы!а1 = "" 1( иввг.юоо1епвав: !п111а1 = " " » оввг.а!ОО1впаае[О] паве = "(О, вогпзав), (О. гогвпаав) (1) ".

(огаас(оввг, сп!11а1) рг1пс("(О;.<(па)) ((1.16:4)) (1. оввгпвав:(оа))". ГогааС( паве, оввг, па=озава(ССП, оа=озегпвавасПСП)) После обработки всех записей вызывается функция рг1гс изегз(), которой в качестве параметра передается словарь о вега. Первая инструкция ргспс() выводит заголовки столбцов. Вторая инструкция рг1пс() выводит дефисы под каждым из заголовков. В этой второй инструкции метод в! г. (Огаас() используется довольно оригинальным образом.

Для вывода ему определяется строка "", то есть пустая строка; в результате при выводе пустой строки мы получаем строку из дефисов заданной ширины поля вывода. Затем мы используем цикл (ог ... 1п для вывода информации о каждом пользователе, извлекая ключи из отсортированного словаря. Для удобства мы создаем переменную озег, чтобы не вводить каждый раз овегв[пеу] в оставшейся части функции. В цикле сначала вызывается метод всг. (Огавс(), чтобы записать в переменную паае фамилию сотрудника, имя и необязательный первый символ отчества. Обращение к элементам в именованном кортеже овег производится по их именам. Собрав строку с именем пользователя, мы выводим информацию о пользователе, ограничивая ширину каждого столбца (имя сотрудника, идентификатор и имя пользователя) желаемыми значениями. Полный программный код программы (который несколько отличается от того, что мы только что рассмотрели„несколькими начальными строками с комментариями и инструкциями импорта) находится в файле делега(е ивегпагпев.ру.

Структура программы — чтение данных из Мо Глава 3. Типы коллекций 51аб56С5.РУ Предположим, что у нас имеется пакет файлов с данными, содержащих числовые результаты некоторой обработки, выполненной нами, и нам необходимо вычислить некоторые основные статистические характеристики, которые дадут нам возможность составить общую картину о полученных данных.

В каждом файле находится обычный текст (в кодировке АЯСП), с одним или более числами в каждой строке (разделенными пробельными символами). Ниже приводится пример информации, которую нам необходимо получить: !63 130. 56 43. 00 = (5.00, 7.00, 50.00] 235.0! соил! аеап аеегап ааое жо.

Ьеи. Здесь видно, что было прочитано 183 числа, из которых наиболее час- то встречаются числа 5, 7 и 50, и со стандартным отклонением по вы- борке 235.01. Сами статистические характеристики хранятся в именованном корте- же Бгаг!61106! 5(аг!в11св = со11ес14опв.пааеогир1е("5(аг!в!!се", "аеап аосе аеогап в1О Оеи") Функция аа1п() может служить схематическим отображением струк- туры программы: Оег аа!и(); 4( 1еп(вув.агро) == ! ог вув.агро[!] ю ("-П", "--Пе1р"): рппг("иваре: (О) Г!1е! [141е2 [... (11еа]]".Гогааг( вув.агро[0])) вув.ах!1() пиаЬегв = (] ггециепс1ев = со11ео(1опв.оегаи1104сг(1пг) гог гв1епаае 1п вув.агро(1:]: геас Оа1а(Г41епаае, пиаоегв, Ггециепс1ев) !Г пиаЬегв: в!а!!в!!ив = са1си1аге вгаг!в!!се(пиаьегв, ггециепсгев) рг1пг геви11в(1еп(пиаьегв), в1а11в14св) е1ве: рып1("по пиаьегв гоипо") Все числа из всех файлов сохраняются в списке пиаЬегв.

Для нахождения модальных (анаиболее часто встречающихсяэ) значений нам необ- файла, обработка каждой записи, вывод результата — одна из наиболее часто встречающихся, и она повторяется в следующем примере. Примеры ЗВАЛ ходимо знать, сколько раз встречается каждое число, поэтому мы создаем словарь со значениями по умолчанию, используя функцию спС() в качестве фабричной функции, где будут накапливаться счетчики.

Затем выполняется обход списка файлов и производится чтение данных из них. В качестве дополнительных аргументов мы передаем функции геаб баСа() список и словарь со значениями по умолчанию, чтобы она могла обновлять их. После чтения всех данных мы исходим из предположения, что некоторые числа были благополучно прочитаны, и вызываем функцию са!си1асе всассвс!св(). Она возвращает именованный кортеж типа 3сассвс сов, который затем используется для вывода результатов.

бес геаб бага(сс1епаае, пиаоегв, Сгвдиепссвв): Гог 1спо, 11па сп епиаега(е(преп(сс1епаае, епообспд="авос1"), вСагС=)): Гог х сп 1спв,вр1сС(): сгу: пиаЬег = 11оаС(х) пиаоегв.аррепб(пиаовг) Ггадивпосев[пиаьег) ч= 1 ехоерс ча1иееггог ав вгг: ргспС("(0).( 1): васррспд (2): (3)".Гогаас( Гс1епаав, 1спо, х, егг)) Каждая строка разбивается по пробельным символам, после чего производится попытка преобразовать каждый элемент в число типа (1оаС. Если преобразование удалось, следовательно, это либо целое число, либо число с плавающей точкой в десятичной или в экспоненциальной форме.

Полученное число добавляется в список пизЬегв и выполняется обновление словаря (гедиепс!ев со значениями по умолчанию. (Если бы здесь использовался обычный словарь бссс, программный код, выполняющий обновление словаря, мог бы выглядеть так: Сгедиепссев[пивеег) = ггедиепс1ев. дес(пивЬег, 0) ь 1.) Если преобразование потерпело неудачу, выводится номер строки (счет строк в текстовых файлах по традиции начинается с 1), текст, который программа пыталась преобразовать в число, и сообщение об ошибке, соответствующее исключению ча1иеЕ г го г.

бес са1си1а(е в(аС1в(1св(пиаЬегв, Ггадиепосев): аеап = виа(пиаЬегв) Г 1еп(пиаЬегв) арба = са1си1а(е зобе(сгедивпссев, 3) аебсап = са!си1аге аебсап(пиеоагв) всб беч = са1си1асе всб беч(пиаьегв, аеап) ге!иго 3сас1вс!ов(аеап, зобе, аебсап, ыб беч) Эта функция используется для сбора всех статистических характеристик воедино. Поскольку среднее значение вычисляется очень просто, мы делаем зто прямо здесь. Вычислением других статистических характеристик занимаются отдельные функции, и в заключение данная Глава 3. Типы коллекций функция возвращает экземпляр именованного кортежа ЯСаС!эС!Оэ, со- держащий четыре вычисленные статистические характеристики.

Ое( са!ои1а(е аопе((гедиепссеэ, вахсаив аоиеэ): псдьеэс ггепиепоу = апх(ггепиепо1еэ.ча!иеэ()) аоие = [пиаЬег Гог пивЬег, Сгедиепсу Сп ГгедиепсСее, !Севе() сс васо.гаьэ(ггедиепоу - шдьеэс ггеоиепсу) <= пуэ Г1оаС Сп(о.ерэс1оп] сГ поС (1 <= !еп(воие) <= аахсаив ариев); аоое = лопе е1эе: воое.эогс() ге(игп воле В выборке может существовать сразу несколько значений, встречающихся наиболее часто, поэтому, помимо словаря (герреро[ее, функции передается максимально допустимое число модальных значений.

[Эта функция вызывается из са1си!а(е э(а([э([сэ(), и при вызове задается максимальное число модальных значений, равное трем.) Функция азх() используется для поиска наибольшего значения в словаре Ггедиепс[еэ. Затем с помощью генератора списков создается список из значений, которые равны наивысшему значению.

Поскольку числа могут быть с плавающей точкой, мы сравниваем абсолютное значение разницы (используя функцию аэСЬ. гаээ(), поскольку она лучше подходит для случаев сравнения малых величин, близких к порогу точности представления числовых значений в компьютере, чем зЬэ()) с наименьшим значением, которое может быть представлено компьютером. Если число модальных значений равно О или больше максимального, то в качестве модального значения возвращается Иоле; в противном случае возвращается сортированный список модальных значений. иеГ са1си1аге аепсап(пивЬегэ): пиаЬегэ = поггеп(пиаЬегэ) аШО1е = 1еп(пивоегэ) О 2 аеисап = пиаЬегэ[а1ОО1е] с( 1еп(пивЬегп) в 2 == 0; вес[оп = (веосап + пивьегп[асоо1е - 1]) г' 2 гегигп аеОСап Медиана [<среднее значение в) — это значение, находящееся в середине упорядоченной выборки чисел, за исключением случая, когда в выборке присутствует четное число чисел, — тогда значение медианы определяется как среднее арифметическое значение двух чисел, находящихся в середине.

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

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

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

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