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

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

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

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

Прежде чем двинуться дальше, считаю своим долгом предупредить вас: будьте осторожны при использовании ведущего нуля в языке Ру- Х)хоп, если вы не предполагаете использование восьмеричных литералов. Интерпретатор Ру()Хоп будет воспринимать их как числа в восьмеричной системе счисления, что может не соответствовать вашим ожиданиям — число 010 всегда соответствует десятичному числу 8, а не десятичному 10 (независимо от того, что вы имели в виду!). 199 Числа в действии Другие встроенные средства для работы с числами »> Ьврогт аатп »> аа1п,рц аа1п.а (3. 1415926535897931, 2.

7182818284590451) № Распространенные константы »> ватЬ, а1п(2 ° аа1Ь. р1 / 180) 0.034899496702500969 № Синус, тангенс, косинус »> аатп.аагт(144), вата.асгг(2) (12.0, 1,4142135623730951) № Квадратный корень »> аЬа(-42), 2**4, роа(2, 4) (42, 16, 16) »> (пт(2.587), гоопб(2.567), гоопб(2.567, 2) № усенение, округление (2, 3.0, 2.5699999999999998) Как уже указывалось ранее, если в последнем случае использовать инструкцию ргтпт, мы получим результат (2, 3, О, 2. 57).

Обратите внимание, что встроенные модули, такие как вэтЬ, необходимо импортировать, а встроенные функции, такие как асв, доступны всегда, без выполнения операции импорта. Говоря другими словами, модули — это внешние компоненты, а встроенные функции постоянно располагаются в пространстве имен, которое используется интерпретатором Руб)топ по умолчанию для поиска имен, используемых программой. Это пространство имен соответствует модулю с именем 001171п .

В четвертой части книги мы подробнее поговорим о разрешении имен, а пока всякий раз, когда слышите слово «модуль», думайте: «импорт». Модуль гапбов из стандартной библиотеки также необходимо импортировать. Этот модуль предоставляет возможность получения случайных чисел с плавающей точкой в диапазоне от О до 1, случайных целых чисел в заданном диапазоне, случайного выбора элементов последовательности и многое другое: »> 1врогт гапбоа »> галсов. гапбоа() 0 49741978338014803 »> гапбов. гапбоа() 0 49354866439625611 »> галсов, гапб1п1( 1, 10) 5 »> гапбоа.

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

Числа >» галопе.сло1се(['ЫГе оГ Вг1ап', 'Но1у Вга11', 'Нееп1пс оГ (1(е')) Ц>Ге о( Впал' »> галопе.сло1се(('Ыуе оГ Вг1еп', 'Но1у Вга11', 'Неап1пе оГ ((Ге')) 'Но1у Вга11' Модуль гапсоа может использоваться, например, для перемешивания колоды карт в игре, случайного выбора изображения в программе демонстрации слайдов, в программах статистического моделирования и т. д. За дополнительной информацией обращайтесь к руководству по стандартной библиотеке языка Ру1йоп. Другие числовые типы В этой главе мы рассматривали базовые числовые типы языка РуВЬоп— целые числа, длинные целые, числа с плавающей точкой и комплексные числа. Их вполне достаточно для решения математических задач, с которыми придется столкнуться большинству программистов.

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

Например, с помощью таких чисел можно хранить значение, которое всегда будет иметь два знака после запятой. Кроме того, можно указать, как должны обрабатываться лишние десятичные цифры — усекаться или округляться. И хотя скорость работы с такими числами несколько ниже, чем с обычными числами с плавающей точкой, тем не менее тип чисел с фиксированной точностью идеально подходит для представления величин, имеющих фиксированную точность, таких как денежные суммы, и для достижения лучшей точности представления. Точность при работе с обычными вещественными числами несколько ниже. Например, результат следующего выражения должен быть равен нулю, но из-за недостаточного числа битов в представлении вещественных чисел страдает точность вычислений: »> 0.1 + 0.1 + 0.1 - 0.3 5.

5511151231257827е-017 Попытка вывести результат в более дружественной форме мало помогает, потому что проблема связана с ограниченной точностью представления вещественных чисел: 161 Другие числовые типы »> рг1лт О.т + О.т + О.т - О.з 5.55111512313е-017 Однако при использовании чисел с фиксированной точностью резуль- тат получается точным: »> Ггов Еес1ва1 1врогт Оес1ва1 »> Оес1ва1('0.1') + Оес1ва1('0.1') + Оесьва1('0,1') - Оес1вв1('0.3') Оес>ва1("0.0") Как показано в этом примере, числа с фиксированной точностью представления создаются вызовом функции конструктора Оес1ва) из модуля Оествз1, которому передается строка, содержащая желаемое число знаков после запятой. Когда в выражении участвуют числа с различной точностью представления, Ру1Ьоп автоматически выбирает наибольшую точность для представления результата: »> оес1ве1('О,т') 4 оес1веИ'0.40') + Оес1ве1('О.то') - оесгве1('0.30') Оества1("О.ОО") Другие инструменты модуля Оества1 позволяют задать точность представления всех таких чисел и многое другое.

Например, объект солтехт из этого модуля позволяет задавать точность (число знаков после запятой) и режим округления (вниз, вверх и т. д.): »> Оес1ва1.0ес1ве1(1) / Оес1ве1. Оес1ваЦ7) Оес>ва1("О, 1428571428571428571428571429" ) »> сес1ве1.9етсолТехс( ).ргео = 4 »> Сесгве1.0ес1ва1(т) / Сес1ва1.0ес1ва1(7) Оесьва1("0 1429") Поскольку тип чисел с фиксированной точностью достаточно редко используется на практике, за дополнительными подробностями я отсылаю вас к руководствам по стандартной библиотеке РуСЬоп. Множества В версии РуФЬоп 2.4 также появился новый тип коллекций — множест.

во. Поскольку этот тип является коллекцией других объектов, возможно, его обсуждение выходит за рамки этой главы. Но так как он поддерживает набор математических операций, мы познакомимся с основами его использования. Чтобы создать объект-множество, нужно передать последовательность или другой объект, поддерживающий возможность итераций по его содержимому, встроенной функции эет (похожая функция существовала в РуЬЬоп до версии 2.4 во внешнем модуле, но начиная с версии РуФЬоп 2.4 эта функция стала встроенной): »> х = ест('аЬсее') »> у = ест( Ьехуг ) Обратно функция возвращает объект множества, который содержит все элементы объекта, переданного функции (примечательно, что множест- 162 Глава 5.

Числа ва не предусматривают возможность определения позиций элементов, а кроме того, они не являются последовательностями): »> х зет(['а', 'с', 'Ь', 'е', 'О']) »> 'е' (п х Тгов Е Проверке вхохдения е иноиество »> х - у Е разнице инояеств зет(['а', 'с', 'е']) »> х [ у в Обьединвние иноиеств зе((['а', 'с', 'ь', 'е', 'о', 'у', 'х', 'е']) »> х а у Ф Пересечение иноявсте зет(['Ь', 'О']) Такие операции удобны при работе с большими множествами данных— пересечение двух множеств содержит объекты, которые присутствуют в обоих множествах, а объединение содержит все объекты из обоих множеств.

Ниже приводится более реальный пример применения операций над множествами — при работе со списками служащих гипотетической компании: »> епд[пеегв век(['Ьоэ', 'вое', 'апп', 'у[с']) »> аападегз зев(['соа', 'зое']) »> »> епд[пеегв а аападегв Ф Кто является и иниенерои, и иенедиерои одновреиенно> зет(['зце']) »> »> впдапвегз [ аападегз В Все, кто лринадлеиит к той или иной категории зет(['ч>с', чюе', 'тоа', 'ьоь', 'апп']) >» »> епдхпеегз — аападегз Ф Иниенери, которие не являются иенедиереии зет(['юс', 'ьоь', 'апп']) Кроме того, объект множества предоставляет метод, который реализует более экзотический набор операций.

Хотя операции над множествами в языке Ру([топ можно реализовать вручную (часто так и делалось в прошлом), встроенные операции над множествами обеспечивают высокую скорость выполнения стандартных операций, опираясь на эффективные алгоритмы и приемы реализации. За дополнительной информацией по множествам обращайтесь к руко. водству по стандартной библиотеке языка РуЬ]ьоп. Множества, созданные таким способом, поддерживают обычные математические операции над множествами посредством операторов.

Обратите внимание: эти операции не могут выполняться над простыми последовательностями — чтобы использовать их, нам требуется создать из них множества: 1бЗ Другие числовые типы о В версии Ру()топ 3.0 предлагается форма записи литералов [1, 2, 3), которая дает тот же эффект, который имеет вызов функции ее)[[1, 2, 31) и тем самым предоставляет еще один способ создания объекта множества, Однако это — будущее расширение языка, поэтому за более подробной информацией обращайтесь к примечаниям к выпуску 3.0. Логические значения Иногда утверждается, что логический тип Ьоо1 в языке Ру$)топ по своей природе является числовым, потому что два его значения Тгсе и гз1зе— это всего лишь целые числа 1 и О, вывод которых настроен особым образом.

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

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

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

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