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

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 44

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 44 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 442020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Результат вычисляется так, как если бы выражение включало скобки,как показано в комментарии.Кроме того, обратите внимание, что в первом выражении все числа являютсяцелыми, поэтому в версии 2.6 будут выполнены целочисленные операции деления и сложения, что даст в результате значение 5. В �������������������������Python������������������� 3.0 будет выполнена операция истинного деления и получен результат, как показано в примере.Если в версии 3.0 потребуется выполнить целочисленное деление, выражениеможно записать так: b // 2 + a (подробнее об операции деления рассказываетсячуть ниже).Во втором выражении круглые скобки окружают операцию сложения, чтобывынудить интерпретатор выполнить ее в первую очередь (то есть до операции /).Кроме того, один из операндов является вещественным числом, т. к.

в нем присутствует десятичная точка: 2.0. Вследствие такого смешения типов перед выполнением операции сложения Python преобразует целое число, на которое ссы-164Глава 5. Числалается имя a, в вещественное число (3.0). Если бы все числа в этом выражениибыли целыми, то операция целочисленного деления (4 / 5) в Python 2.6 вернулабы число 0, но в Python 3.0 она возвращает вещественное число 0.8 (подробнее обоперации деления рассказывается чуть ниже).Форматы отображения чиселОбратите внимание: в последнем примере была использована инструкцияprint.

Без этой инструкции результат мог бы показаться немного странным:>>> b / (2.0 + a)0.80000000000000004# Автоматический вывод: выводится большее число цифр>>> print(b / (2.0 + a)) # Инструкция print отбрасывает лишние цифры0.8Причина появления такого немного странного результата кроется в ограничениях аппаратных средств, реализующих вещественную математику, и в невозможности обеспечить точное представление некоторых значений. Обсуждениеаппаратной архитектуры компьютера выходит далеко за рамки этой книги,тем не менее, я замечу, что все цифры в первом результате действительно присутствуют в аппаратной части компьютера, выполняющей операции над числами с плавающей точкой, просто вы не привыкли видеть их. Я использовалэтот пример, чтобы продемонстрировать различия в форматах отображениячисел – при автоматическом выводе результатов в ходе интерактивного сеансаотображается больше цифр, чем при использовании инструкции print.

Если выне желаете, чтобы выводились лишние цифры, используйте инструкцию print.Во врезке «Форматы представления repr и str» на стр. 9 рассказывается, какдобиться более дружественного формата отображения результатов.Однако надо заметить, что не всегда значения отображаются с таким большимчислом цифр:>>> 1 / 2.00.5и что кроме применения функции print и автоматического вывода результатовсуществуют и другие способы отображения чисел:>>> num = 1 / 3.0>>> num# Автоматический вывод0.33333333333333331>>> print num# Инструкция print выполняет округление0.333333333333>>> “%e” % num# Вывод с использованием выражения форматирования строк‘3.333333e-001’>>> ‘%4.2f’ % num # Альтернативный формат представления вещественных чисел‘0.33’>>> ‘{0:4.2f}’.format(num) # Метод форматирования строк (Python 2.6 и 3.0)‘0.33’В последних трех случаях была использована операция форматированиястрок – инструмент, обладающий гибкой возможностью определять форматпредставления, но об этом мы поговорим в главе 7, когда займемся исследованием строк.

Результатом этой операции обычно являются строки, предназначенные для вывода.165Числа в действииФорматы представления repr и strC технической точки зрения различие между функцией автоматического вывода в интерактивной оболочке и инструкцией print соответствуетразличию между встроенными функциями repr и str:>>> num = 1 / 3>>> repr(num)# Используется для автоматического вывода: в форме как есть‘0.33333333333333331’>>> str(num) # Используется функцией print: дружественная форма‘0.333333333333’Обе функции преобразуют произвольные объекты в их строковое представление: repr (и функция автоматического вывода в интерактивнойоболочке) выводит результаты в том виде, в каком они были бы указаныв программном коде; str (и операция print) обычно выполняет преобразование значения в более дружественное представление.

Некоторые объекты имеют оба варианта строкового представления: str – для использования в обычных случаях и repr – для вывода в расширенном варианте.Эта идея еще всплывет далее, при обсуждении строк и возможности перегрузки операторов в классах, и тогда вы получите более полное представление об этих встроенных функциях.Помимо операции получения строкового представления произвольныхобъектов имя str так же является именем типа строковых данных и может вызываться с названием кодировки в качестве аргумента для преобразования строк байтов в строки Юникода.

Эту дополнительную особенность мы рассмотрим в главе 36.Операции сравнения: простые и составныеДо сих пор мы имели дело со стандартными числовыми операциями (такимикак сложение или умножение), но, кроме того, числа можно сравнивать. Обычные операторы сравнения действуют именно так, как и можно было бы ожидать, – они сравнивают значения операндов и возвращают логический результат (который, как правило, проверяется объемлющей инструкцией):>>> 1 <True>>> 2.0True>>> 2.0True>>> 2.0False2# Меньше чем>= 1# Больше или равно: число 1 преобразуется 1.0== 2.0 # Проверка на равенство значений!= 2.0 # Проверка на неравенство значенийОбратите внимание, смешивание разнотипных операндов допускается, толькоесли оба они принадлежат к числовым типам.

Во второй инструкции, в примере выше, интерпретатор выполняет сравнивание с позиции более сложноготипа, преобразуя целое число в вещественное.166Глава 5. ЧислаСамое интересное, что Python позволяет составлять цепочки из несколькихоператоров сравнения, для выполнения проверки на принадлежность диапазону значений. Цепочка операторов сравнения является, своего рода, сокращенной формой записи более длинных логических выражений. Проще говоря, ���Python позволяет объединить несколько операций сравнения, чтобы реализоватьпроверку на вхождение в диапазон значений. Выражение (A < B < C), например,проверяет, входит ли значение B в диапазон от A до C, и является эквивалентомлогическому выражению (A < B and B < C), но выглядит гораздо понятнее (и короче).

Например, допустим, что в программе имеются следующие инструкцииприсваивания:>>> X = 2>>> Y = 4>>> Z = 6Следующие два выражения дают совершенно идентичный результат, но первоеиз них короче и, вполне возможно, выполняется немного быстрее, потому чтоинтерпретатору приходится вычислять значение Y только один раз:>>> X < Y < Z # Составная операция сравнения: принадлежность диапазонуTrue>>> X < Y and Y < ZTrueТо же самое относится и к выражениям с ложным результатом; кроме того, допускается составлять цепочки произвольной длины:>>> XFalse>>> XFalse>>> 1True>>> 1False< Y > Z< Y and Y > Z< 2 < 3.0 < 4> 2 > 3.0 > 4В цепочках сравнений можно использовать и другие операторы сравнения.При этом получающиеся результаты могут на первый взгляд не иметь смысла,если не попытаться вычислить выражение тем же способом, как это делает интерпретатор Python.

Например, следующее выражение ложно уже потому, чточисло 1 не равно числу 2:>>> 1 == 2 < 3 # То же, что и: 1 == 2 and 2 < 3False# Но не то же самое, что и: False < 3 (что означает утверждение# 0 < 3, которое истинно)Интерпретатор не сравнивает значение False (результат операции 1 == 2) с числом 3 – с технической точки зрения это соответствовало бы выражению 0 < 3,которое должно было бы вернуть True (как мы увидим ниже, в этой же главе,True и False – это всего лишь числа 1 и 0, расширенные приписанными им свойствами).Деление: классическое, с округлением вниз и истинноеВ предыдущих разделах вы уже видели, как работает операция деления, и поэтому должны помнить, что в �����������������������������������������������Python����������������������������������������� 2.6 и 3.0 она действует по-разному. Фак-Числа в действии167тически существует три версии операции деления и два различных оператораделения, поведение одного из которых изменилось в версии 3.0:X/YКлассическое и истинное деление.

В Python 2.6 и в более ранних версияхэтот оператор выполняет операцию классического деления, когда дробнаячасть результата усекается при делении целых чисел и сохраняется приделении вещественных чисел. В ���������������������������������������Python��������������������������������� 3.0 этот оператор выполняет операцию истинного деления, которая всегда сохраняет дробную часть независимо от типов операндов.X // YДеление с округлением вниз.

Этот оператор впервые появился в Python 2.2и доступен в обеих версиях Python, 2.6 и 3.0. Он всегда отсекает дробнуючасть, округляя результат до ближайшего наименьшего целого независимоот типов операндов.Истинное деление было добавлено по той причине, что в текущей модели классического деления результаты зависят от типов операндов и с трудом могутбыть оценены заранее в языке программирования с динамической типизацией, каким является Python. Операция классического деления была ликвидирована в Python 3.0 из-за этого ограничения – в версии 3.0 операторы / и // реализуют истинное деление и деление с округлением вниз.Подводя итоги:•• В версии 3.0 оператор / всегда выполняет операцию истинного деления,возвращает вещественный результат, включающий дробную часть, независимо от типов операндов.

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

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

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

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