Числа очень часто применяются в программирование для ведения счета в играх, представления данных в визуализации, хранение информации и т.д.
Содержание страницы:
1. Типы чисел
2. Арифметические операторы
2.1. Сложение и вычитание
2.2. Умножение
2.3. Возведение в степень
2.4. Деление
2.5. Деление с округлением
2.6. Оператор вычисления остатка от деления
3. Исключения и трассировка
1. Типы чисел в Python.
В Python числа делятся на несколько категорий в соответствии со способом их использования. Основные это целые числа ( int) и вещественные ( float) или числа с плавающей точкой. Чтобы узнать к какому типу относится число или переменная, можно воспользоваться встроенной функциейtype(). Запустите командную строку и активируйте Python. В скобках введите число или переменную, чтобы узнать ее тип.
2. Арифметические операторы Python.
В таблице перечислены арифметические операторы, среди которых встречаются некоторые знаки, не используемые в алгебре.
2.1. Сложение и вычитание в Python.
Сложение и вычитание в целом выполняется и записывается, как и обычно в алгебре.
2.2. Умножение в Python ( * )
В Python в качестве оператора умножения используется знак * (звездочка)
>>> 5 * 5 25
2.3. Возведение в степень в Python ( ** )
>>> 5 ** 6 15625 >>> 81 ** (1/2) 9.0
Для вычисления квадратного корня можно воспользоваться показателем степени 1/2. Корень 81 = 9.
2.4. Деление в Python ( / )
Оператор деления ( / ) делит числитель на знаменатель
>>> 10 / 2 5.0 >>> 10 / 8 1.25
2.5. Деление с округлением в Python ( // )
Операция целочисленное деление ( // ) делит числитель на знаменатель, в результате получается наибольшее целое число, не превышающее результат. В Python дробная часть отсекается.
При обычном деление 10 на 8, получается результат 1,25. Python отсекает дробную часть и в итоге получаем 1.
2.6. Оператор вычисления остатка от деления ( % )
Для вычисления остатка от деления в Python используется оператор вычисления остатка от деления %
>>> 21 % 5 1 >>> 18 % 4 2
>>> 9.5 % 4.5 0.5
В данных примерах при делении 21 на 5, получается частное 4 и остаток 1. Во втором случае при делении 18 на 4, получается 4 и остаток 2. Этот оператор чаще работает с целыми числами, но также может использоваться и с другими типами.
3. Исключения и трассировка.
>>> 5 / 0 Traceback (most recent call last): File » «, line 1, in ZeroDivisionError: division by zero
Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.
Целые числа (int)
Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:
Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).
Битовые операции
Над целыми числами также можно производить битовые операции
x | y
Побитовое или
x ^ y
Побитовое исключающее или
x & y
Побитовое и
x > y
Битовый сдвиг вправо
Дополнительные методы
Системы счисления
Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:
Вещественные числа (float)
Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:
Для высокой точности используют другие объекты (например Decimal и Fraction)).
Также вещественные числа не поддерживают длинную арифметику:
Простенькие примеры работы с числами:
Дополнительные методы
Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.
Модуль math предоставляет более сложные математические функции.
Модуль random реализует генератор случайных чисел и функции случайного выбора.
Комплексные числа (complex)
В Python встроены также и комплексные числа:
Для работы с комплексными числами используется также модуль cmath.
П ри выполнении ряда арифметических операций пользователю нужно следовать правилам округления. Преобразовывать нужно в большую или меньшую сторону, до целого значения или до сотых.
Встроенные функции
Для операции округления в Python есть встроенные функции — round() и int()
round
round(number[, ndigits]) — округляет число (number) до ndigits знаков после запятой. Это стандартная функция, которая для выполнения не требует подключения модуля math.
По умолчанию операция проводится до нуля знаков — до ближайшего целого числа. Например:
round(3.5) > 4 round(3.75, 1) > 3.8
Синтаксически функция вызывается двумя способами.
int — встроенная функция, не требующая подключения дополнительных модулей. Её функция — преобразование действительных значений к целому путем округления в сторону нуля. Например:
import math math.floor(3.999) > 3 math.ceil(3.999) > 4
💡 Чтобы число по int преобразовать по математическим правилам, нужно выполнить следующие действия.
Синтаксически преобразование оформляется так:
Функции из библиотеки Math
Модуль необходим в Python. Он предоставляет пользователю широкий функционал работы с числами. Для обработки алгоритмов сначала проводят импорт модуля.
math.ceil
Функция получила название от английского слова » ceiling » — » потолок «
Функция преобразовывает значение в большую сторону (вверх). Этот термин применяется и в математике. Он означает число, которое равно или больше заданного.
Любая дробь находится между двумя целыми числами. Например, 2.3 лежит между 2 и 3. Функция ceil() определяет большую сторону и возводит к нему результат преобразования. Например:
import math math.ceil(3.25) > 4
Алгоритм определяет большую границу интервала с учетом знака:
math.floor
Функция получила название от английского слова » floor » — » пол «
math.floor() действует противоположно math.ceil() — округляет дробное значение до ближайшего целого, которое меньше или равно исходному. Округление происходит в меньшую сторону (вниз):
При округлении учитывается знак перед данными.
math.trunc
Функция получила название от английского слова » truncate » — » урезать «
Функция характеризуется отбрасыванием дробной части. После преобразования получается целое значение без учета дроби. Такой алгоритм не является округлением в арифметическом смысле. В Пайтон просто игнорируется дробь независимо от ее значения:
💡 Избавиться от дроби можно без подключения модуля. Для этого есть стандартная функция int Она преобразовывает дробные числа в целые путем игнорирования дроби.
Различие округления в Python 2 и Python 3
В Python 2 и Python 3 реализованы разные принципы округления.
В Python 2 используется арифметическое округление. В нем наблюдается большое количество погрешностей, что приводит к неточностям в процессе вычислений.
Во втором Python есть только 4 цифры, которые ведут к преобразованию к меньшему значению — 1, 2, 3 и 4. Также 5 цифр, которые приводят к большему значению — 5, 6, 7, 8, 9. Такое неравное распределение ведет к тому, что погрешность постоянно нарастает.
Python 2 по правилам арифметического округления преобразует число 5,685 в 5,68 до второго знака. Такая погрешность связана с тем, что десятичные цифры float в двоичном коде невозможно корректно представить.
В Python 3 используются принципы банковского округления. Это означает, что преобразование производится к ближайшему четному. В таком случае также не удается полностью избежать возникающих ошибок, но программисты добиваются точности в подсчетах.
2,5 по правилам банковского преобразования будет равно 2, а 3,5 = 4 (значения возводятся к близкому четному). Минимизировать погрешности можно благодаря практически равной вероятности, что перед пятеркой будет четное или нечетное число.
Python поддерживает все распространенные арифметические операции:
Сложение двух чисел:
Вычитание двух чисел:
Умножение двух чисел:
Деление двух чисел:
Целочисленное деление двух чисел:
Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть
Возведение в степень:
Получение остатка от деления:
В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 — 6 = 1
При последовательном использовании нескольких арифметических операций их выполнение производится в соответствии с их приоритетом. В начале выполняются операции с большим приоритетом. Приоритеты операций в порядке убывания приведены в следующей таблице.
Пусть у нас выполняется следующее выражение:
Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).
Чтобы переопределить порядок операций, можно использовать скобки:
Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.
Арифметические операции с присвоением
Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:
Присвоение результата сложения
Присвоение результата вычитания
Присвоение результата умножения
Присвоение результата от деления
Присвоение результата целочисленного деления
Присвоение степени числа
Присвоение остатка от деления
Функции преобразования чисел
Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.
Например, пусть у нас будет следующий код:
Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():
Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой. Но вообще с дробными числами надо учитывать, что результат операций с ними может быть не совсем точным. Например:
В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:
В этот случае для округления результата мы можем использовать функцию round() :
Первый параметр функции — округляемое число, а второй — сколько знаков после запятой должно содержать получаемое число.
Представление числа
При обычном определении числовой переменной она получает значение в десятичной системе. Но кроме десятичной в Python мы можем использовать двоичную, восьмеричную и шестнадцатеричную системы.
Для определения числа в двоичной системе перед его значением ставится 0 и префикс b :
Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o :
Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x :
И с числами в других системах измерения также можно проводить арифметические операции:
Для вывода числа в различных системах исчисления используются функция format, которая вызывается у строки. В эту строку передаются различные форматы. Для двоичной системы » «, где число 8 указывает, сколько знаков должно быть в записи числа. Если знаков указано больше, чем требуется для числа, то ненужные позиции заполняются нулями. Для шестнадцатеричной системы применяется формат » «. И здесь все аналогично — запись числа состоит из двух знаков, если один знак не нужен, то вместо него вставляется ноль. А для записи в восьмеричной системе испольуется формат » «.
Как отбросить дробную часть в python
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // (она соответствует операции div в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая % (она соответствует операции mod в Паскале). Например:
2. Действительные числа
Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float :
Напомним, что результатом операции деления / всегда является действительное число ( float ), в то время как результатом операции // является целое число ( int ).
3. Библиотека math
Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой
Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх. Соответствующая функция ceil от одного аргумента вызывается, например, так: math.ceil(x) (то есть явно указывается, что из модуля math используется функция ceil ). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
Round Python. Округление
Основы
Введение в тему
Зачастую при вычислениях, а их в работе программиста не мало, мы сталкиваемся с задачами округления. Округлять можно по разному: вверх, вниз и с разной степенью точности. В языке Пайтон для выполнения этого класса задач предусмотрено несколько доступных инструментов: функции round(), int(), а так же модуль math. Но, есть и подводные камни. Обо всём этом Вы узнаете из данного урока.
Встроенные функции
Начнём с рассмотрения встроенных функций: round и int. Что означает «встроенные»? Всё просто: чтобы их использовать не надо ничего подключать или импортировать – просто пишете имя функции и она уже готова к бою.
Round
Функция round – округляет число до необходимой точности (заданного количества знаков после запятой).
Точность является не обязательным параметром и, если её не задать, то Python округлит число, указанное в скобках, до ближайшего целого числа:
О принципах работы Decimal и Fraction и пойдет речь в данном обзоре.
Для чего нужен модуль Decimal?
Некоторые пользователи задаются вопросом, зачем нам нужен модуль для выполнения простейшей арифметики с десятичными числами, когда мы вполне можем сделать то же самое с помощью чисел с плавающей точкой 🤷♂️?
Перед тем, как мы ответим на данный вопрос, мы хотим, чтобы вы сами посчитали в Python, какой результат будет в данном примере: 0.1+0.2? Вы будете удивлены, когда узнаете, что правильный ответ — это не 0,3, а 0,30000000000000004.
Чтобы понять, почему в расчетах возникла ошибка, попробуйте представить 1/3 в десятичной форме. Тогда вы заметите, что число на самом деле не заканчивается в базе 10. Так как все числа должны быть каким-то образом представлены, при их сохранении в консоли делается несколько приближений, что и приводит к ошибкам.
Cпециально для читателей-гуманитариев, у нас есть объяснение принципов работы модулей Питона: «Она на долю секунды отвела взгляд» и «Она отвела взгляд на короткое время» — чувствуете разницу?
Чтобы получить точные результаты, подобные тем, к которым мы привыкли при выполнении расчетов вручную, нам нужно что-то, что поддерживает быструю, точно округленную, десятичную арифметику с плавающей запятой, и модуль Decimal отлично справляется с этой задачей. Теперь, когда мы разобрались с теорией, переходим к принципам работы десятичного модуля.
Модуль Decimal
Синтаксис
С помощью Decimal вы можете создавать десятичные числа.
Decimal обеспечивает поддержку правильного округления десятичной арифметики с плавающей точкой.
Контекстом в Deciaml можно управлять, устанавливая свои значения. Например, для того, чтобы управлять точностью Decimal, необходимо изменить параметр контекста prec (от англ. precision — точность):
>>> from decimal import Decimal >>> getcontext().prec = 4 # установим точность округление >>> number = Decimal(«2.1234123») >>> print(number.quantize(Decimal(‘1.000’))) 2.123 # округление до 3 чисел в дробной части >>> print(number.quantize(Decimal(‘1.00’))) 2.12 # округление до 2 чисел в дробной части >>> print(number.quantize(Decimal(‘1.0’))) 2.1 # округление до 1 числа в дробной части
Потребность в максимальной точности расчетов на практике чаще всего возникает в отраслях и ситуациях, где некорректно выбранная точность расчетов может обернуться серьезными финансовыми потерями:
Таким образом, этих двух модулей должно быть достаточно, чтобы помочь вам выполнять общие операции как с десятичными, так и с дробными числами. Как мы уже говорили, вы можете использовать эти модули вместе с математическим модулем для вычисления значения всех видов математических функций в желаемом формате.
Модуль Decimal незаменим, если нужно считать деньги: с его помощью вы сможете подсчитать точную сумму, вплоть до копеек.
Fraction считает просто и честно: любители онлайн-игр приспособили его для подсчетов в игровой математике.