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

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

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

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

В составе Руб)топ присутствует мощный и сложный модуль для работы с форматом СЯЧ и похожими на него — модуль сэч, но здесь мы будем выполнять всю обработку вручную. В формате СЯЧ каждая запись располагается на одной строке, а поля внутри записи отделяются друг от друга запятыми. Каждое поле может быть либо строкой, либо числом. Строки должны окружаться апострофами или кавычками, а числа не должны окружаться кавычками, если они не содержат запятые. Внутри строк допускается присутствие запятых, и они не должны интерпретироваться как разделители полей. Мы будем исходить из предположения, что первая запись в файле содержит имена полей.

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

Мы будем использовать светло-зеленый цвет фона для первой строки таблицы (где будут выводиться названия полей), а при выводе строк с данными будем чередовать белый и светло-желтый цвет фона. Кроме того, нам необходимо правильно экрани- ровать специальные символыНТМ( («й», «<» и «>»), а строки немного сократить. Ниже приводится маленький фрагмент файла с данными: "СООНТНУ","2000","2001".2002,2003,2004 "АИТ100А АН0 ВАНВВВА",0,0,0,0,0 "АНВЕНТ1ИА",37,35,33,35,39 ' ВАНАНАВ, ТНЕ'П 1, Ц 1, 1, 1 "ВАННА!Н",5,б,б,б,б Предположим, что данные находятся в файле г(а!а/со2-эатр1е.сэи и выполнена команда сэ»2Ь!з1. ру < Са!э/002-эзер1е. сээ > 002-эзер1е. Ь!в1, тогда файл со2-еатр1е. Игт1 должен содержать примерно следующее: <!аь1е ьсгбег='1'><Тг ьдсо1ог='1>дп!дгееп'> <ш>соопггу</Те><ьб а1>дп=' г!дп! ' >2000</ш><ьб а1!дп=' г>дь! '>2001</Тб> <тб а1>дп='г!дь!'>2002</ьб><!д а1!дп='г>дп!'>2003</Тб> <!Е а1!дп='г!ВП!'>2004</ТС></Тг> Глава 2.

Типы данных <!г Ьдсо1ог='1>дл!уе11ои'><!С>Агдеп!!па</гс> <!о а1>до= ' г!дп! ' >37</!0><гб а1!до= ' ггдп! ' >35</10> <!б а1>дп='г!дп!'>33</!0><!б а1!дп='г!дп!'>36</!0> <!О а1>дп='ггдл!'>39</!0></!г> </!аые> Мы немного привели в порядок результаты работы программы и опустили некоторые строки, подставив вместо них многоточия.

Мы использовали очень простую версию НТМЬ вЂ” НТМВ 4 !гапв1!1опа1, без применения таблиц стилей. На рис. 2.7 показано, как выглядит полученная таблица в веб-броузере. яг~... ~* . Еи.".~ а ,'дпидиа апб Вагьиааг ОГ Ог 12003 (2004 Г (ягдепйпа 37( 35~ 37В 360 зэ ~Вала<паз, Тие Рис.2.7. Таблица, произведенная программой езо2/ггт!.ру, в броузере Теперь, когда мы увидели, как используется программа и что она делает, можно приступать к изучению программного кода. Программа начинается е импортирования модуля зуз — с этого момента мы не будем больше показывать строки, выполняющие импортирование„если в них не импортируется нечто необычное или они не требуют обсуждения.

Последняя инструкция в программе — это простой вызов функции: аа>п() В программе сао2Ит1.ру первой вызываемой функцией является функция ва!и(), которая в свою очередь вызывает функции рг1п1 31аг1() и рг1п! 1!пе(). Функция рг!и! 1!пе() вызывает функции ех1гас! Г!е103() и езеаре Л!э1(). Структура программы показана на рис. 2.8. Когда интерпретатор Ру!Ьоп читает файл, он начинает делать это с самого начала. Поэтому сначала будет выполнен импорт, затем будет Хотя в языке Ру!Ьоп не требуется явно указывать точку входа в программу, как в некоторых других языках программирования, тем не менее является распространенной практикой создание в программе на языке Ру!Ьоп функции с именем аа!и(), которая вызываетея для выполнения обработки.

Поскольку функция не может вызыватьея до того, как она будет определена, мы должны вставлять вызов вагп() только после того, как данная функция будет определена. Порядок следования функций в файле (то есть порядок, в котором они создаются) не имеет значения. 121 Примеры Рис.2.8. Структура программы саи2Ыт(.ру создана функция аа1п(), а затем будут созданы остальные функции— в том порядке, в каком они следуют в файле. Когда интерпретатор, наконец, достигнет вызова аа(п() в конце файла, все функции, которые вызываются функцией еа1п() (и все функции, которые вызываются этими функциями), будут определены.

Выполнение обработки, как и следовало ожидать, начинается в точке вызова функции аа1п( ) . Рассмотрим все функции по порядку, начиная с функции аатп(). Оег еа1п(): еахитОТП = 100 рг(п1 еТаг1() соопс = 0 ит1е Тгое: 1гу: 1хпе = шро1() тт соопг == 0: со1ог = "11дшргееп" е111 соопг % 2: со1ог = "иоме" е1ае. со1ог = "110ПТуе11ои" рг1пс 1тпе(1!пе, со1ог, аахиго1п) соип1 += 1 ехсерс ЕОЕЕггог; ьгеах ргшс епс() Переменная аахи1ОТЬ используется для хранения числа символов в ячейке. Если поле больше, чем это число, часть строки отсекается и на место отброшенного текста добавляется многоточие.

Программный код Глава 2. Типы данных функций рг!пг з1агг(), рг101 1!пе() и рг!01 епс() будет приведен чуть ниже. Цикл ал11е выполняет обход всех входных строк — это могут быть строки, вводимые пользователем с клавиатуры, но мы предполагаем, что данные будут перенаправлены из файла. Далее выбирается цвет фона и вызывается функция рг!Ь1 1(пе(), которая выводит строку в виде строки таблицы в формате НТМТ . оег рг1пс згагс(): рг1пг("<гаь)е ьогоег='!'>") Ое( рг!пг епс(); рг1пг("</гас)е>") Мы могли бы не создавать эти две функции и просто вставить соответствующие вызовы рг101() в функцию аа!и().

Но мы предпочитаем выделять логику, так как это делает реализацию более гибкой, хотя в этом маленьком примере гибкость не имеет большого значения. оег рггпг 11пе(1ьпе, со1ог, паха>огь); ргьп1("<сг ьрсо1ог='(О) '>'.гогааг(со!ог)) г!е10а = ех!гас! г>е1оа(1>пе) Гог (1е)О Ап Г>е1са: 1Г по! Г>е!О: рып1("<го></1о>") е!ае: поаЬег = Г1е1с.гер1асе(",", "") ггу. х = (1оа1(поаоег) ргдпс("<10 а1грп='г!061'>(О;о)</го>".гогаа1(гоопо(х))) ехСЕРЬ На1оеЕггог: Гге!О = Г>е1О.Ы11е() Г>е10 = Гге1с.гер1асе(" Апо ", " апс ") Г>е1О = еасаре Ьса1(Г!е10) >Г 1еп(Г!е1О) <= аахаАО1Ь: ргАпг("<1о>(0)</го>".гогаас(г>е10)) е1ае: рг>пг("<10>(0:.

(1)) ...</Ьо>". (огааг(гье1о, аахагсгп) ) рг!пс( </1г> ) Мы не можем использовать метод 01 г. ар111(", ") для разбиения каждой строки на поля, потому что запятые могут находиться внутри строк в кавычках. Поэтому мы возложили эту обязанность на функцию ех1 гас! Г!е100() . Получив список строк полей (в виде строк без окружающих их кавычек), мы выполняем обход списка и создаем для каждого поля ячейку таблицы. Если поле пустое, мы выводим пустую ячейку.

Если поле было заключено в кавычки, это может быть строка или число в кавычках, содержащее символы запятой, например "1, 566". Учитывая такую возможность, мы создаем копию поля без запятых и пытаемся преобразовать ее в число типа г1оаг. Если преобразование удалось, мы определяем Примеры выравнивание в ячейке по правому краю, а значение поля округляется до ближайшего целого, которое и выводится. Если преобразование не удалось, следовательно, поле содержит строку.

В этом случае мы с помощью метода всг. 1111е() изменяем регистр символов и замещаем слово «Апг!» на слово «авс(», устраняя побочный эффект действия метода всг,с!11е(). Затем выполняется экранирование специальных символов НТМ[ и выводится либо поле целиком, либо первые вахи!бсп символов с добавлением многоточия. Простейшей альтернативой использованию вложенного поля замены в строке формата является получение среза строки, например: ргспт("<СО>(0) ...</СО>".Гогаат(ссе1О[:вахны1П))) Еще одно преимущество такого подхода состоит в том, что он требует меньшего объема ввода с клавиатуры.

бес ех1гасС ссе1бв(1гпе): Гсе1св = [) Гсе10 = аио1е = Иове Гог с сп 1!пе: сг с сп "'~"'": ст аио1е св Иове: В начало строки в кавычках аиосе = с е1сс аио1е == с; и конец строки в кавычках аио1е = Иове е1ве: !се!О «= с в другап кавычка внутри строки в кавычках солт!псе !г диасе св зове апо с == ",": в епб ог а гсе10 Гсе1ов.аррепб(тсе1С) Г!е10 = "" е1ве; Г!е1О «= с в добавить символ в поле ст Гсе1О; гсе1ов.аррепо(гсе1о) в добавить последнее поле в список ге1игп Гсе!св Эта функция читает символы из строки один за другим и накапливает список полей, где каждое поле — это строка без окружающих ее кавычек, Функция способна обрабатывать поля, не заключенные в кавычки, и поля, заключенные в кавычки или в апострофы, корректно обрабатывая запятые и кавычки (апострофы в строках, заключенных в кавычки, и кавычки в строках, заключенных в апострофы).

Оес евсаре Ша1(сехС): сехс = секс.гер1асе("а", раавр;") сехс = секс.герсасе("<", ра!с;") 1ехс = 1ех1. гер1асе( ">", "арс; " ) ге!иго 1ехт 124 Глава 2. Типы данных Эта функция просто замещает каждый специальный символ НТМЬ соответствующей ему сущностью языка НТМЬ. В первую очередь, конечно, мы должны заменить символ амперсанда и угловые скобки, хотя порядок не имеет никакого значения. В стандартной библиотеке Рубанов имеется более сложная версия этой функции — вы получите возможность использовать ее в упражнениях и еще раз встретитесь с ней в главе 7.

В заключение Эта глава началась с демонстрации списка ключевых слов языка Ру111оп и описания правил, применяемых к идентификаторам в языке Ру111оп. Благодаря поддержке Юникода идентификаторы языка РуФлоп не ограничены поднабором символов такого небольшого множества, как АЯСН или Ьа11п-1. Также был описан тип данных 1пц который отличается от аналогичных типов во многих других языках программирования тем, что не имеет ограничений на размер. Размер целых чисел в языке Ру1поп ограничивается лишь объемом машинной памяти, и интерпретатор вполне в состоянии работать с числами, состоящими из сотен цифр. Все основные типы данных в языке Ру$поп относятся к категории неизменяемых, но эта их особенность практически незаметна — за счет того, что комбинированные операторы присваивания (+=, *=, -=, /= и другие) позволяют использовать достаточно естественный синтаксис, хотя при этом интерпретатор Ру$)юп создает новые объекты с результатами и выполняет повторную привязку к ним наших переменных.

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

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

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

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