Модуль числа питон: Модуль числа в Python 3 — Функция abs библиотеки math
Содержание
Модуль числа в Python 3 — Функция abs библиотеки math
Очень часто возникает необходимость вычисления модуля числа в Python. Рассмотрим, что такое модуль числа, какие есть способы его вычисления. Так же отдельно коснемся комплексных чисел.
Модуль числа
Часто в программировании требуется вычислить абсолютное значение числа. Иначе говоря, отбросить знак.
При вычислении модуля возможны 3 ситуации:
- Когда число больше 0. Если взять его по модулю — не изменится.
- Модуль нуля так же равен нулю.
- У отрицательного числа отбрасываем знак. То есть умножаем его на -1.
Но это все справедливо только для действительных чисел. Чему же тогда будет равен модуль комплексных?
Комплексное число состоит из действительной составляющей и мнимой. Геометрически это можно представить как 2 ортогональные оси: действительную и мнимую. Отмечаем на координатных осях требуемую точку. Модулем будет длина отрезка, проведенного из начала координат в эту точку.
Исходя из теоремы Пифагора получаем, что модуль комплексного числа это корень квадратный из суммы квадратов мнимой и действительной частей.
Вычисление
Вычислять модуль можно следующими способами:
- Используя стандартную функцию abs.
- С помощью функции fabs библиотеки math.
- При помощи самостоятельно написанной функции.
Все эти функции работают как в Python 2, так и в Python 3.
abs
Для вычисления в Python модуля числа используется функция abs. Результат функции того же типа, которого был аргумент.
a = -10 b = abs(a) print(b) print(type(b)) 10 <class 'int'>
fabs
Можно так же воспользоваться функцией fabs из библиотеки math. Библиотеку можно подключить с помощью from math import fabs
.
from math import fabs a = -10 b = fabs(a) print(b) print(type(b)) 10.0 <class 'float'>
Отличие abs от fabs заключается в том, что функция abs возвращает значение того же типа, что и аргумент. Функция же fabs вначале преобразует тип аргумента к вещественному числу.
Свое решение
Если по каким то причинам нет возможности или желания использовать стандартные функции, то можно написать свое решение.
Например, можно вычислить воспользоваться тернарным оператором.
a = -10 b = a if a > 0 else -a print(b) 10
На основе такого условия сделаем свою функцию.
def my_abs(a): return a if a > 0 else -a print(my_abs(-3)) 3
Модуль комплексного числа
Мы разобрались как происходит вычисление с действительными числами. Теперь посмотрим, как в языке программирования Python можно получить модуль комплексного.
Функцией fabs мы не сможем воспользоваться. Если попытаемся это сделать, то получим ошибку приведения комплексного числа к действительному (TypeError).
from math import fabs a = -10-2j b = fabs(a) print(b) Traceback (most recent call last): File "main. py", line 3, in <module> b = fabs(a) TypeError: can't convert complex to float
А вот с помощью abs преобразование удается.
a = -10-2j b = abs(a) print(b) 10.19803902718557
Или же напишем свою функцию:
from math import sqrt def my_abs_complex(c): return sqrt(c.real**2 + c.imag**2) a = -10-2j b = my_abs_complex(a) print(b) 10.198039027185569
Результаты получились одинаковыми. Но нам все равно пришлось подключить библиотеку math для вычисления квадратного корня.
модуль числа на примерах с int и float, синтаксис функции
Встроенная функция abs(x)
в Python возвращает абсолютное значение аргумента x, который может быть целым или числом с плавающей точкой, или же объектом, реализующим функцию __abs__()
. Для комплексных чисел функция возвращает их величину. Абсолютное значение любого числового значения -x или +x — это всегда соответствующее положительное +x.
Аргумент | x | целое число, число с плавающей точкой, комплексное число, объект, реализующий __abs__() |
Возвращаемое значение | |x| | возвращает абсолютное значение входящего аргумента |
Пример abs() с целым числом
Следующий код демонстрирует, как получить абсолютное значение 42 положительного числа 42.
x = 42 abs_x = abs(x) print(f"Абсолютное значение {x} это {abs_x}") # Вывод: Абсолютное значение 42 это 42Вывод: «Абсолютное значение 42 это 42».
То же самое, но уже с отрицательным -42.
x = -42 abs_x = abs(x) print(f"Абсолютное значение {x} это {abs_x}") # Вывод: Абсолютное значение -42 это 42Пример с числом float
Вот как получить абсолютное значение 42. 42 и для -42.42:
x = 42.42 abs_x = abs(x) print(f"Абсолютное значение {x} это {abs_x}") # Абсолютное значение 42.42 это 42.42 x = -42.42 abs_x = abs(x) print(f"Абсолютное значение {x} это {abs_x}") # Абсолютное значение -42.42 это 42.42Комплексное число
Абсолютное значение комплексного числа (3+10j).
complex_number = (3+10j) abs_complex_number = abs(complex_number) print(f"Абсолютное значение {complex_number} это {abs_complex_number}") # Абсолютное значение (3+10j) это 10.44030650891055abs() vs fabs()
abs(x)
вычисляет абсолютное значение аргументаx
. По аналогии функцияfabs(x)
модуляmath
вычисляет то же значение. Разница лишь в том, чтоmath.fabs(x)
возвращает число с плавающей точкой, аabs(x)
вернет целое число, если в качестве аргумента было целое число. Fabs расшифровывается как float absolute value.Пример c
fabs()
:
x = 42 print(abs(x)) # 42 import math print(math.fabs(x)) # 42.0abs() vs. np.abs()
И
abs()
в Python, иnp.abs()
в NumPy вычисляют абсолютное значение числа, но есть два отличия.np.abs(x)
всегда возвращает число с плавающей точкой. Такжеnp.abs(x)
принимает массив NumPy, вычисляя значение для каждого элемента коллекции.Пример:
x = 42 print(abs(x)) # 42 import numpy as np print(np.fabs(x)) # 42.0 a = np.array([-1, 2, -4]) print(np.abs(a)) # [1 2 4]
abs
иnp.abs
абсолютно идентичны. Нет разницы какой использовать. У первой преимущество лишь в том, что ее вызов короче.Вывод
Функция
abs()
— это встроенная функция, возвращающая абсолютное значение числа. Она принимает целые, с плавающей точкой и комплексные числа на вход.Если передать в
abs()
целое число или число с плавающей точкой, то функция вернет не-отрицательное значениеn
и сохранит тип. Для целого числа — целое число. Для числа с плавающей точкой — число с плавающей точкой.
>>> abs(20) 20 >>> abs(20.0) 20.0 >>> abs(-20.0) 20.0Комплексные числа состоят из двух частей и могут быть записаны в форме a + bj, где a и b — это или целые числа, или числа с плавающей точкой. Абсолютное значение a + bj вычисляется математически как math.sqrt(a**2 + b**2).
>>> abs(3 + 4j) 5.0 >>> math.sqrt(3**2 + 4**2) 5.0Таким образом, результат всегда положительный и всегда является числом с плавающей точкой.
Модуль числа в питоне
В программировании мы всегда взаимодействуем с данными, которые не являются какой-то абстрактной субстанцией. Все данные разделяются по определенному типу. На предыдущих уроках мы узнали, про строки, списки, словари и о логическом типе данных. Сегодня, поговорим о самом базовом типе данных в Python — числах.
Почему нельзя свалить все данные в одну общую кучу и не заморачиваться с каждым типом по отдельности? Допустим, мы присвоили переменной a цифру 5: a = 5. А теперь представьте, что никакого разделения по типу данных нет. Так что находится в переменной: число или строка? Если 10 — это число, то с ним можно произвести математические действия. А если это строка, то мы имеем дело с текстом и тогда Python задействует совсем другие методы.
# объединение строк (конкатенация)
d = ’10’
f = ‘негритят’
d + ‘ ‘ + f
’10 негритят’Ключевой момент: У каждого типа данных свои методы.
Цифра 100 написанная без кавычек, относится к числовому типу данных. А цифра ‘100’ в кавычках — к строковому типу. С помощью синтаксиса, мы сообщаем Python, какой у нас тип данных. Числа в Python делятся на два вида: целое число и вещественное.
Целое число
К целым числам (int) относятся все положительные и отрицательные числа без дробной части. Все положительные целые числа называются натуральными.
-80, -10, -4, 0, 1, 2, 20
Вещественное число
У вещественных чисел (float) всегда присутствует дробная часть, а ещё их называют числами с плавающей точкой. Поскольку дробная часть отделяется от целой части, точкой.
Математические операции с числами
Ради математических вычислений в Python и существует числовой тип данных.
Сложение чисел
e = 45 + 55
print(e)
100Вычитание чисел
Умножение чисел
Деление чисел
У результата деления целого числа на целое, всегда будет дробная часть. Такая особенность обусловлена тем, что в большинстве случаев числа не делятся без остатка.
Целочисленное деление
В результате целочисленного деления, всегда будет целое число. Мы просто отбрасываем остаток. Число 15 поместится целых 2 раза.
Остаток от деления
Ответом будет остаток от деления. При обычном делении, ответ был бы 15.1. Но нам нужен только остаток. Убираем целое число и оставляем 1.
n = 16 % 3
print(n)
1Возведение числа в степень
Число перед двумя звездочками — это объект, который нужно возвести в степень. Цифра после звездочек обозначает, в какую степень возводим: 4 возводим во вторую степень.
l = 4 ** 2
print(l)
16В Python есть встроенные математические функции.
Модуль числа
Функция abs() находит модуль числа. Передаем в параметрах одно значение. Если передаваемое значение отрицательное, то abs() вернет положительное число. Модуль числа не может быть отрицательным.
Наименьшее число
Функция min() в Python возвращает самое маленькое число.
Максимальное число
Функция max() вернет самое большое число.
Округление до целого числа
Функция round() округляет до целого числа.
Вывести число в Python
Функция print() выводит числа на экран.
Ввести число в Python
Функция input() считывает вводимое значение пользователем в консоль и сохраняет его в переменной. Но что произойдет, если мы введем какое-нибудь число и затем обратимся к переменной?
>>> r = input()
33
>>> r
’33’ # это строкаPython вывел строку, так как число стоит в кавычках.
Для ввода целого числа, следует обернуть функцию input() в другую функцию int().
Для вещественного числа, соответственно в float().
Как посчитать сумму введенных чисел?
В команде input() можно передавать подсказки.
w = int(input(«Введите первое число: «))
q = int(input(«Введите второе число: «))
summa=w+q
print(summa)Введите первое число: 6
Введите второе число: 7
13Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov. ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновленияЕсли у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.
Очень часто возникает необходимость вычисления модуля числа в Python. Рассмотрим, что такое модуль числа, какие есть способы его вычисления. Так же отдельно коснемся комплексных чисел.
Модуль числа
Часто в программировании требуется вычислить абсолютное значение числа. Иначе говоря, отбросить знак.
При вычислении модуля возможны 3 ситуации:
- Когда число больше 0. Если взять его по модулю — не изменится.
- Модуль нуля так же равен нулю.
- У отрицательного числа отбрасываем знак. То есть умножаем его на -1.
Но это все справедливо только для действительных чисел. Чему же тогда будет равен модуль комплексных?
Комплексное число состоит из действительной составляющей и мнимой. Геометрически это можно представить как 2 ортогональные оси: действительную и мнимую. Отмечаем на координатных осях требуемую точку. Модулем будет длина отрезка, проведенного из начала координат в эту точку.
Вычисление
Вычислять модуль можно следующими способами:
- Используя стандартную функцию abs.
- С помощью функции fabs библиотеки math.
- При помощи самостоятельно написанной функции.
Все эти функции работают как в Python 2, так и в Python 3.
Для вычисления в Python модуля числа используется функция abs. Результат функции того же типа, которого был аргумент.
Можно так же воспользоваться функцией fabs из библиотеки math. Библиотеку можно подключить с помощью from math import fabs .
Свое решение
Если по каким то причинам нет возможности или желания использовать стандартные функции, то можно написать свое решение.
Например, можно вычислить воспользоваться тернарным оператором.
На основе такого условия сделаем свою функцию.
Модуль комплексного числа
Мы разобрались как происходит вычисление с действительными числами. Теперь посмотрим, как в языке программирования Python можно получить модуль комплексного.
Функцией fabs мы не сможем воспользоваться. Если попытаемся это сделать, то получим ошибку приведения комплексного числа к действительному (TypeError).
А вот с помощью abs преобразование удается.
Или же напишем свою функцию:
Результаты получились одинаковыми. Но нам все равно пришлось подключить библиотеку math для вычисления квадратного корня.
Встроенные в язык программирования функции доступны сразу. Чтобы их вызвать, не надо выполнять никаких дополнительных действий. Однако за время существования любого популярного языка на нем было написано столько функций и классов, которые оказались востребованными множеством программистов и в разных областях, что включить весь этот объем кода в сам язык если возможно, то нецелесообразно.
Чтобы разрешить проблему доступа к дополнительным возможностям языка, в программировании стало общепринятой практикой использовать так называемые модули, пакеты и библиотеки. Каждый модуль содержит коллекцию функций и классов, предназначенных для решения задач из определенной области. Так в модуле math языка Python содержатся математические функции, модуль random позволяет генерировать псевдослучайные числа, в модуле datetime содержатся классы для работы с датами и временем, модуль sys предоставляет доступ к системным переменным и т. д.
Количество модулей для языка Python огромно, что связано с популярностью языка. Часть модулей собрана в так называемую стандартную библиотеку. Стандартная она потому, что поставляется вместе с установочным пакетом. Однако существуют сторонние библиотеки. Они скачиваются и устанавливаются отдельно.
Для доступа к функционалу модуля, его надо импортировать в программу. После импорта интерпретатор «знает» о существовании дополнительных классов и функций и позволяет ими пользоваться.
В Питоне импорт осуществляется командой import. При этом существует несколько способов импорта. Рассмотрим работу с модулем на примере math. Итак,
Ничего не произошло. Однако в глобальной области видимости появилось имя math. Если до импорта вы упомянули бы имя math, то возникла бы ошибка NameError. Теперь же
В программе завелся объект math, относящийся к классу module.
Чтобы увидеть перечень функций, входящих в этот модуль, воспользуемся встроенной в Python функцией dir(), передав ей в качестве аргумента имя модуля:
Проигнорируем имена с двойными подчеркиваниями. Все остальное – имена функций и констант (переменных, которые не меняют своих значений), включенных в модуль math. Чтобы вызвать функцию из модуля, надо впереди написать имя модуля, поставить точку, далее указать имя функции, после чего в скобках передать аргументы, если они требуются. Например, чтобы вызвать функцию pow из math, надо написать так:
Обратите внимание, эта другая функция pow(), не та, что встроена в сам язык. «Обычная» функция pow() возвращает целое, если аргументы целые числа:
Для обращения к константе скобки не нужны:
Если мы не знаем, что делает та или иная функция, то можем получить справочную информацию о ней с помощью встроенной в язык Python функции help():
Для выхода из интерактивной справки надо нажать клавишу q. В данном случае сообщается, что функция возвращает целое число, и это наибольший общий делитель для чисел x и y . Описание модулей и их содержания также можно посмотреть в официальной документации на сайте python.org.
Второй способ импорта – это когда импортируется не сам модуль, а только необходимые функции из него.
Перевести можно как «из модуля math импортировать функции gcd, sqrt и hypot».
В таком случае при их вызове не надо перед именем функции указывать имя модуля:
Чтобы импортировать сразу все функции из модуля:
Импорт через from не лишен недостатка. В программе уже может быть идентификатор с таким же именем, как имя одной из импортируемых функций или констант. Ошибки не будет, но одно из них окажется «затерто»:
Здесь исчезает значение 3.14, присвоенное переменной pi. Это имя теперь указывает на число из модуля math. Если импорт сделать раньше, чем присвоение значения pi, то будет все наоборот:
В этой связи более опасен именно импорт всех функций. Так как в этом случае очень легко не заметить подмены значений идентификаторов.
Однако можно изменить имя идентификатора из модуля на какое угодно:
В данном случае константа pi из модуля импортируется под именем P. Смысл подобных импортов в сокращении имен, так как есть модули с длинными именами, а имена функций и классов в них еще длиннее. Если в программу импортируется всего пара сущностей, и они используются в ней часто, то имеет смысл переименовать их на более короткий вариант. Сравните:
Во всех остальных случаях лучше оставлять идентификаторы содержимого модуля в пространстве имен самого модуля и получать доступ к ним через имя модуля, т. е. выполнять импорт командой import имя_модуля , а вызывать, например, функции через имя_модуля.имя_функции() .
Практическая работа. Создание собственного модуля
Программист на Python всегда может создать собственный модуль, чтобы использовать его в нескольких своих программах или даже предоставить в пользование всему миру. В качестве тренировки создадим модуль с функциями для вычисления площадей прямоугольника, треугольника и круга:
Здесь также иллюстрируется принцип, что один модуль может импортировать другие. В данном случае импортируются функции из модуля math.
Поместите данный код в отдельный файл square.py. Однако куда поместить сам файл?
Когда интерпретатор Питона встречает команду импорта, то просматривает на наличие файла-модуля определенные каталоги. Их перечень можно увидеть по содержимому sys.path:
Это список адресов в Linux. В Windows он будет несколько другим. Первый элемент – пустая строка, что обозначает текущий каталог, то есть то место, где сохранена сама программа, импортирующая модуль. Если вы сохраните файл-модуль и файл-программу в одном каталоге, то интерпретатор без труда найдет модуль.
Также модуль можно положить в любой другой из указанных в списке каталогов. Тогда он будет доступен для всех программ на Python, а также его можно будет импортировать в интерактивном режиме.
Можно добавить в sys.path свой каталог. Однако в этом случае либо код программы должен содержать команды изменения значения sys.path, либо надо править конфигурационный файл операционной системы. В большинстве случаев лучше так не делать.
Поместите файл square.py в тот же каталог, где будет исполняемая программа. Ее код должен включать инструкцию импорта модуля square (при импорте расширение файла не указывается) и вызов той функции и с теми параметрами, которые ввел пользователь. Т. е. у пользователя надо спросить, площадь какой фигуры он хочет вычислить. Далее запросить у него аргументы для соответствующей функции. Передать их в функцию из модуля square, а полученный оттуда результат вывести на экран.
Примечание. Исполнение модуля как самостоятельного скрипта, а также создание строк документации, которые отображает встроенная в Python функция help(), будут рассмотрены в курсе объектно-ориентированного программирования.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса.
Модуль Math — Примеры математических программ в Python
Библиотека Math в Python обеспечивает доступ к некоторым популярным математическим функциям и константам, которые можно использовать в коде для более сложных математических вычислений. Библиотека является встроенным модулем Python, поэтому никакой дополнительной установки через pip делать не нужно. В данной статье будут даны примеры часто используемых функций и констант библиотеки Math в Python.
Содержание статьи
Специальные константы библиотеки math
В библиотеке Math в Python есть две важные математические константы.
Число Пи из библиотеки math
Первой важной математической константой является число Пи (π). Оно обозначает отношение длины окружности к диаметру, его значение 3,141592653589793. Чтобы получить к нему доступ, сначала импортируем библиотеку math следующим образом:
Затем можно получить доступ к константе, вызывая pi
:
Вывод
Данную константу можно использовать для вычисления площади или длины окружности. Далее представлен пример простого кода, с помощью которого это можно сделать:
import math
radius = 2
print(‘Площадь окружности с радиусом 2 равна:’, math.pi * (radius ** 2))
import math
radius = 2 print(‘Площадь окружности с радиусом 2 равна:’, math.pi * (radius ** 2)) |
Вывод
Площадь окружности с радиусом 2 равна: 12. 566370614359172
Площадь окружности с радиусом 2 равна: 12.566370614359172 |
Мы возвели радиус во вторую степень и умножили значение на число Пи, как и следовало сделать в соответствии с формулой πr2.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Число Эйлера из библиотеки math
Число Эйлера (е) является основанием натурального логарифма. Оно также является частью библиотеки Math в Python. Получить доступ к числу можно следующим образом:
Вывод
В следующем примере представлено, как можно использовать вышеуказанную константу:
import math
print((math. e + 6 / 2) * 4.32)
import math
print((math.e + 6 / 2) * 4.32) |
Вывод
Экспонента и логарифм библиотеки math
В данном разделе рассмотрим функции библиотеки Math в Python, которые используются для нахождения экспоненты и логарифмов.
Функция экспоненты exp() в Python
Библиотека Math в Python поставляется с функцией exp()
, которую можно использовать для вычисления значения е
. К примеру, ex
— экспонента от х
. Значение е
равно 2.718281828459045
.
Метод может быть использован со следующим синтаксисом:
Параметр x
может быть положительным или отрицательным числом. Если x
не число, метод возвращает ошибку. Рассмотрим пример использования данного метода:
import math
# Инициализация значений
an_int = 6
a_neg_int = -8
a_float = 2.00
# Передача значений методу exp() и вывод
print(math. exp(an_int))
print(math.exp(a_neg_int))
print(math.exp(a_float))
import math
# Инициализация значений an_int = 6 a_neg_int = -8 a_float = 2.00
# Передача значений методу exp() и вывод print(math.exp(an_int)) print(math.exp(a_neg_int)) print(math.exp(a_float)) |
Вывод
403.4287934927351
0.00033546262790251185
7.38905609893065
403.4287934927351 0.00033546262790251185 7.38905609893065 |
Мы объявили три переменные и присвоили им значения с различными числовыми типами данных. Мы передали значения методу exp()
для вычисления их экспоненты.
Мы также можем применить данный метод для встроенных констант, что продемонстрировано ниже:
import math
print(math.exp(math.e))
print(math.exp(math.pi))
import math
print(math. exp(math.e)) print(math.exp(math.pi)) |
Вывод
15.154262241479262
23.140692632779267
15.154262241479262 23.140692632779267 |
При передаче не числового значения методу будет сгенерирована ошибка TypeError, как показано далее:
import math
print(math.exp(«20»))
import math
print(math.exp(«20»)) |
Вывод
Traceback (most recent call last):
File «C:/Users/admin/mathe.py», line 3, in <module>
print (math.exp(«20»))
TypeError: a float is required
Traceback (most recent call last): File «C:/Users/admin/mathe.py», line 3, in <module> print (math.exp(«20»)) TypeError: a float is required |
Как видно из примера выше, генерируется ошибка TypeError
.
Функция логарифма log() в Python
Функция log()
возвращает логарифм определенного числа. Натуральный логарифм вычисляется относительно основания е
. В следующем примере показано использование функции логарифма:
import math
print(«math.log(10.43):», math.log(10.43))
print(«math.log(20):», math.log(20))
print(«math.log(math.pi):», math.log(math.pi))
import math
print(«math.log(10.43):», math.log(10.43)) print(«math.log(20):», math.log(20)) print(«math.log(math.pi):», math.log(math.pi)) |
В скрипте выше методу передаются числовые значения с различными типами данных. Также рассчитывается натуральный логарифм константы pi
. Вывод следующий:
math.log(10.43): 2.344686269012681
math.log(20): 2.995732273553991
math.log(math.pi): 1.1447298858494002
math.log(10.43): 2.344686269012681 math.log(20): 2.995732273553991 math.log(math.pi): 1.1447298858494002 |
Функция log10() в Python
Метод log10()
возвращает логарифм по основанию 10 определенного числа. К примеру:
import math
# Возвращает log10 числа 50
print(«log10 числа 50 равен:», math.log10(50))
import math
# Возвращает log10 числа 50 print(«log10 числа 50 равен:», math.log10(50)) |
Вывод
log10 числа 50 равен: 1.6989700043360187
log10 числа 50 равен: 1.6989700043360187 |
Функция log2() в Python
Функция log2()
возвращает логарифм определенного числа по основанию 2. К примеру:
import math
# Возвращает log2 числа 16
print(«log2 числа 16 равен:», math.log2(16))
import math
# Возвращает log2 числа 16 print(«log2 числа 16 равен:», math.log2(16)) |
Вывод
log2 числа 16 равен: 4.0
log2 числа 16 равен: 4.0 |
Функция log(x, y) в Python
Функция log(x, y)
возвращает логарифм числа х
по основанию y
. К примеру:
import math
# Возвращает логарифм 3,4
print(«Логарифм 3 по основанию 4 равен:», math.log(3, 4))
import math
# Возвращает логарифм 3,4 print(«Логарифм 3 по основанию 4 равен:», math.log(3, 4)) |
Вывод
Логарифм 3 по основанию 4 равен: 0.6309297535714574
Логарифм 3 по основанию 4 равен: 0.6309297535714574 |
Функция log1p(x) в Python
Функция log1p(x)
рассчитывает логарифм(1+x), как представлено ниже:
import math
print(«Значение логарифма(1+x) от 10 равно:», math.log1p(10))
import math
print(«Значение логарифма(1+x) от 10 равно:», math.log1p(10)) |
Вывод
Значение логарифма(1+x) от 10 равно: 2.3978952727983707
Значение логарифма(1+x) от 10 равно: 2.x (при использовании функции expml()) равно: 0.00010000500016667084 |
К числу других математических функций относятся:
pow()
: принимает два вещественных аргумента, возводит первый аргумент в степень, значением которой является второй аргумент, после чего возвращает результат. К примеру,pow(2, 2)
эквивалентно выражению2 ** 2
;sqrt()
: возвращает квадратный корень определенного числа.
Примеры данных методов представлены ниже:
Возведение в степень
Вывод
Квадратный корень
Вывод
Тригонометрические функции в Python
Модуль math в Python поддерживает все тригонометрические функции. Самые популярные представлены ниже:
sin(a)
: Возвращает синус"а"
в радианах;cos(a)
: Возвращает косинус"а"
в радианах;tan(a)
: Возвращает тангенс"а"
в радианах;asin(a)
: Возвращает инвертированный синус. Аналогичным образом работают"atan"
и"acos"
;degrees(a)
: Конвертирует угол"a"
из радиан в градусы;radians(a)
: Конвертирует угол"a"
из градусов в радианы.
Рассмотрим следующий пример:
import math
angle_In_Degrees = 62
angle_In_Radians = math.radians(angle_In_Degrees)
print(‘Значение угла:’, angle_In_Radians)
print(‘sin(x) равен:’, math.sin(angle_In_Radians))
print(‘tan(x) равен:’, math.tan(angle_In_Radians))
print(‘cos(x) равен:’, math.cos(angle_In_Radians))
import math
angle_In_Degrees = 62 angle_In_Radians = math.radians(angle_In_Degrees)
print(‘Значение угла:’, angle_In_Radians) print(‘sin(x) равен:’, math.sin(angle_In_Radians)) print(‘tan(x) равен:’, math.tan(angle_In_Radians)) print(‘cos(x) равен:’, math.cos(angle_In_Radians)) |
Вывод
Значение угла: 1.0821041362364843
sin(x) равен: 0.8829475928589269
tan(x) равен: 1.8807264653463318
cos(x) равен: 0.46947156278589086
Значение угла: 1.0821041362364843 sin(x) равен: 0.8829475928589269 tan(x) равен: 1.8807264653463318 cos(x) равен: 0.46947156278589086 |
Обратите внимание, что вначале мы конвертировали значение угла из градусов в радианы для осуществления дальнейших операций.
Конвертация типов числа в Python
Python может конвертировать начальный тип числа в другой указанный тип. Данный процесс называется «преобразованием». Python может внутренне конвертировать число одного типа в другой, когда в выражении присутствуют смешанные значения. Такой случай продемонстрирован в следующем примере:
Вывод
В вышеприведенном примере целое число 3 было преобразовано в вещественное число 3.0 с плавающей точкой. Результатом сложения также является число с плавающей точкой (или запятой).
Однако иногда вам необходимо явно привести число из одного типа в другой, чтобы удовлетворить требования параметра функции или оператора. Это можно сделать с помощью различных встроенных функций Python.
Например, чтобы преобразовать целое число в число с плавающей точкой, мы должны вызвать функцию float()
, как показано ниже:
a = 12
b = float(a)
print(b)
a = 12 b = float(a) print(b) |
Вывод
Целое число типа integer
было преобразовано в вещественное число типа float
. float
также можно конвертировать в integer
следующим образом:
a = 12.65
b = int(a)
print(b)
a = 12.65 b = int(a) print(b) |
Вывод
Вещественное число было преобразовано в целое через удаление дробной части и сохранение базового числа. Обратите внимание, что при конвертации значения в int
подобным образом число будет усекаться, а не округляться вверх.
Заключение
Библиотека Math предоставляет функции и константы, которые можно использовать для выполнения арифметических и тригонометрических операций в Python. Библиотека изначально встроена в Python, поэтому дополнительную установку перед использованием делать не требуется. Для получения дополнительной информации можете просмотреть официальную документацию.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: [email protected]
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»
Оператор по модулю в Python
Что делает модуль в следующем фрагменте кода?
from math import *
3.14 % 2 * pi
Как мы вычисляем по модулю число с плавающей запятой?
python
python-3.x
operators
Поделиться
Источник
KodeWarrior
05 октября 2012 в 22:07
5 ответов
- Как смоделировать оператор по модулю в сплаве?
Как смоделировать оператор по модулю в сплаве? Я хочу попробовать сплав, чтобы доказать, что любое кратное 4 делится на 2…. Вот мой код.. //proof that 4n is divisible by 2 module I4nDivisibleby2 sig num {} fact { all n:num|n%4=0 } assert even { all n : num | n%2 = 0 } check even for 1 Это не…
- Получение по модулю байт-числа в Python
При работе в Python, допустим, у меня есть длинный объект bytes . Я хочу получить его по модулю некоторого числа. Например, скажем, у меня есть байтовый объект b’hi’, и я хочу, чтобы он был по модулю 3, тогда результат будет 26729% 3 == 2 . (Объект bytes рассматривается как одно большое число.)…
66
Когда у вас есть выражение:
a % b = c
Это действительно означает, что существует целое число n
, которое делает c
как можно меньшим, но неотрицательным.
a - n*b = c
Вручную вы можете просто вычесть 2
(или добавить 2
, если ваше число отрицательное) снова и снова, пока конечный результат не станет наименьшим возможным положительным числом:
3.14 % 2
= 3.14 - 1 * 2
= 1.14
Кроме того, 3.14 % 2 * pi
интерпретируется как (3.14 % 2) * pi
. Я не уверен, что вы хотели написать 3.14 % (2 * pi)
(в любом случае алгоритм один и тот же. Просто вычитайте/сложите, пока число не станет как можно меньше).
Поделиться
Blender
05 октября 2012 в 22:11
24
В дополнение к другим ответам, в документации fmod
есть несколько интересных вещей, которые можно сказать по этому вопросу:
math.fmod(x, y)
Возврат
fmod(x, y)
, как определено платформой C
библиотека. Обратите внимание, что выражение Pythonx % y
может не возвращать тот же
результат. Цель стандарта C состоит в том, чтобыfmod(x, y)
был точно
(математически; с бесконечной точностью) равноx - n*y
для некоторого
целого числа n, такого, что результат имеет тот же знак, что иx
, и величину
меньшеabs(y)
. Pythonx % y
возвращает результат со знакомy
вместо этого и может быть не совсем вычислимым для Аргументов float. Для
например,fmod(-1e-100, 1e100)
— это-1e-100
, но результат Python
-1e-100 % 1e100
— это1e100-1e-100
, который не может быть представлен точно как поплавок, и округляется до удивительного1e100
. По этой причине
функцияfmod()
обычно предпочтительна при работе с поплавками, в то время как
Python’sx % y
предпочтительнее при работе с целыми числами.
Поделиться
Thomas
05 октября 2012 в 22:14
3
То же самое можно было бы ожидать и от нормального модуля .., например 7 % 4 = 3
, 7.3 % 4.0 = 3.3
Остерегайтесь проблем с точностью с плавающей запятой.
Поделиться
Xorlev
05 октября 2012 в 22:14
2
то же самое , что и нормальный модуль 3.14 % 6.28 = 3.14
, точно так же, как 3.14%4 =3.14
3.14%2 = 1.14
(остаток…)
Поделиться
Joran Beasley
05 октября 2012 в 22:12
1
вы должны использовать fmod(a,b)
While abs(x%y) < abs(y) is true
математически для floats
это может быть неверно численно из-за roundoff
.
Например, если предположить, что платформа, на которой Python float
является числом двойной точности IEEE 754
, для того чтобы -1e-100 % 1e100
имел тот же знак , что и 1e100
, вычисленный результат равен -1e-100 + 1e100
, что численно точно равно 1e100
.
Функция fmod()
в математическом модуле возвращает результат, знак которого совпадает со знаком первого аргумента, и поэтому в данном случае возвращает -1e-100
. Какой подход является более подходящим, зависит от приложения.
where x = a%b
используется для целого числа по модулю
Поделиться
praveen kansara
15 мая 2013 в 14:26
Похожие вопросы:
Попытка заставить оператор по модулю работать в javascript
Попытка заставить оператор по модулю работать в javascript. Это относится к функции NodeRed, которая принимает значения в массиве. Я могу получить среднее значение без оператора по модулю, с ним…
Как я могу использовать оператор по модулю (%) в JavaScript?
Как я могу использовать оператор по модулю (%) при вычислении чисел для проектов JavaScript?
Python по модулю на поплавках
Может ли кто-нибудь объяснить, как работает оператор по модулю в Python? Я не могу понять, почему 3.5 % 0.1 = 0.1 .
Как смоделировать оператор по модулю в сплаве?
Как смоделировать оператор по модулю в сплаве? Я хочу попробовать сплав, чтобы доказать, что любое кратное 4 делится на 2…. Вот мой код.. //proof that 4n is divisible by 2 module I4nDivisibleby2…
Получение по модулю байт-числа в Python
При работе в Python, допустим, у меня есть длинный объект bytes . Я хочу получить его по модулю некоторого числа. Например, скажем, у меня есть байтовый объект b’hi’, и я хочу, чтобы он был по…
Как легко реализовать C-подобную операцию по модулю (остатку) в python 2.7
Оператор по модулю % на отрицательных числах реализуется по-разному в python и в C. В C г.: -4 % 3 = -1 , в то время как в python: -4 % 3 = 2 . Я знаю, как реализовать python-подобный модуль в C….
Javascript оператор по модулю ведет себя иначе, чем другие языки
Согласно Википедии, оператор по модулю (остаток от целочисленного деления) на n должен давать результат между 0 и n-1 . Это действительно так в python : print(-1%5) # outputs 4 В Ruby году : puts…
Оператор BigQuery по модулю (%) не работает в предложении WHERE
Когда я использовал оператор по модулю (%) в предложении WHERE на BigQuery, SELECT * from `our-project.data_set1.table1` WHERE the_id % 10 = 0 LIMIT 1000 он был отклонен с сообщением об ошибке типа…
Оператор по модулю в Elixir
Как использовать оператор по модулю в Elixir? Например, в Ruby вы можете сделать: 5 % 2 == 0 Чем он отличается от оператора Ruby по модулю?
Оператор по модулю на множестве в Python
Как использовать оператор по модулю для набора чисел? if value > 2 and value % 2 == 0 or value % 3 == 0 or value % 5 == 0 or value % 7 == 0 or value % 11 == 0: return False Как мне объединить все…
Модули. Курс «Python. Введение в программирование»
Встроенные в язык программирования функции доступны сразу. Чтобы их вызвать, не надо выполнять никаких дополнительных действий. Однако за время существования любого популярного языка на нем было написано столько функций и классов, которые оказались востребованными множеством программистов и в разных областях, что включить весь этот объем кода в сам язык если возможно, то нецелесообразно.
Чтобы разрешить проблему доступа к дополнительным возможностям языка, в программировании стало общепринятой практикой использовать так называемые модули, пакеты и библиотеки. Каждый модуль содержит коллекцию функций и классов, предназначенных для решения задач из определенной области. Так в модуле math языка Python содержатся математические функции, модуль random позволяет генерировать псевдослучайные числа, в модуле datetime содержатся классы для работы с датами и временем, модуль sys предоставляет доступ к системным переменным и т. д.
Количество модулей для языка Python огромно, что связано с популярностью языка. Часть модулей собрана в так называемую стандартную библиотеку. Стандартная она потому, что поставляется вместе с установочным пакетом. Однако существуют сторонние библиотеки. Они скачиваются и устанавливаются отдельно.
Для доступа к функционалу модуля, его надо импортировать в программу. После импорта интерпретатор «знает» о существовании дополнительных классов и функций и позволяет ими пользоваться.
В Питоне импорт осуществляется командой import
. При этом существует несколько способов импорта. Рассмотрим работу с модулем на примере math
. Итак,
Ничего не произошло. Однако в глобальной области видимости появилось имя math
. Если до импорта вы упомянули бы имя math
, то возникла бы ошибка NameError
. Теперь же
>>> math <module 'math' (built-in)>
В программе завелся объект math
, относящийся к классу module
.
Чтобы увидеть перечень функций, входящих в этот модуль, воспользуемся встроенной в Python функцией dir()
, передав ей в качестве аргумента имя модуля:
>>> dir(math) ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
Проигнорируем имена с двойными подчеркиваниями. Все остальное – имена функций и констант (переменных, которые не меняют своих значений), включенных в модуль math. Чтобы вызвать функцию из модуля, надо впереди написать имя модуля, поставить точку, далее указать имя функции, после чего в скобках передать аргументы, если они требуются. Например, чтобы вызвать функцию pow из math, надо написать так:
Обратите внимание, эта другая функция pow()
, не та, что встроена в сам язык. «Обычная» функция pow()
возвращает целое, если аргументы целые числа:
Для обращения к константе скобки не нужны:
>>> math.pi 3.141592653589793
Если мы не знаем, что делает та или иная функция, то можем получить справочную информацию о ней с помощью встроенной в язык Python функции help()
:
>>> help(math.gcd) Help on built-in function gcd in module math: gcd(...) gcd(x, y) -> int greatest common divisor of x and y
Для выхода из интерактивной справки надо нажать клавишу q. В данном случае сообщается, что функция возвращает целое число, и это наибольший общий делитель для чисел x и y. Описание модулей и их содержания также можно посмотреть в официальной документации на сайте python.org.
Второй способ импорта – это когда импортируется не сам модуль, а только необходимые функции из него.
>>> from math import gcd, sqrt, hypot
Перевести можно как «из модуля math
импортировать функции gcd
, sqrt
и hypot
«.
В таком случае при их вызове не надо перед именем функции указывать имя модуля:
>>> gcd(100, 150) 50 >>> sqrt(16) 4.0 >>> hypot(3, 4) 5.0
Чтобы импортировать сразу все функции из модуля:
Импорт через from
не лишен недостатка. В программе уже может быть идентификатор с таким же именем, как имя одной из импортируемых функций или констант. Ошибки не будет, но одно из них окажется «затерто»:
>>> pi = 3.14 >>> from math import pi >>> pi 3.141592653589793
Здесь исчезает значение 3.14, присвоенное переменной pi. Это имя теперь указывает на число из модуля math
. Если импорт сделать раньше, чем присвоение значения pi, то будет все наоборот:
>>> from math import pi >>> pi = 3.14 >>> pi 3.14
В этой связи более опасен именно импорт всех функций. Так как в этом случае очень легко не заметить подмены значений идентификаторов.
Однако можно изменить имя идентификатора из модуля на какое угодно:
>>> from math import pi as P >>> P 3.141592653589793 >>> pi 3.14
В данном случае константа pi
из модуля импортируется под именем P. Смысл подобных импортов в сокращении имен, так как есть модули с длинными именами, а имена функций и классов в них еще длиннее. Если в программу импортируется всего пара сущностей, и они используются в ней часто, то имеет смысл переименовать их на более короткий вариант. Сравните:
>>> import calendar >>> calendar.weekheader(2) 'Mo Tu We Th Fr Sa Su'
и
>>> from calendar import weekheader as week >>> week(3) 'Mon Tue Wed Thu Fri Sat Sun'
Во всех остальных случаях лучше оставлять идентификаторы содержимого модуля в пространстве имен самого модуля и получать доступ к ним через имя модуля, то есть выполнять импорт командой import имя_модуля
, а вызывать, например, функции через имя_модуля.имя_функции()
.
Практическая работа. Создание собственного модуля
Программист на Python всегда может создать собственный модуль, чтобы использовать его в нескольких своих программах или даже предоставить в пользование всему миру. В качестве тренировки создадим модуль с функциями для вычисления площадей прямоугольника, треугольника и круга:
from math import pi, pow def rectangle(a, b): return round(a * b, 2) def triangle(a, h): return round(0.5 * a * h, 2) def circle(r): return round(pi * pow(r, 2), 2)
Здесь также иллюстрируется принцип, что один модуль может импортировать другие. В данном случае импортируются функции из модуля math
.
Поместите данный код в отдельный файл square.py. Однако куда поместить сам файл?
Когда интерпретатор Питона встречает команду импорта, то просматривает на наличие файла-модуля определенные каталоги. Их перечень можно увидеть по содержимому sys.path
:
>>> import sys >>> sys.path ['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/home/pl/.local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
Это список адресов в Linux. В Windows он будет несколько другим. Первый элемент – пустая строка, что обозначает текущий каталог, то есть то место, где сохранена сама программа, импортирующая модуль. Если вы сохраните файл-модуль и файл-программу в одном каталоге, то интерпретатор без труда найдет модуль.
Также модуль можно положить в любой другой из указанных в списке каталогов. Тогда он будет доступен для всех программ на Python, а также его можно будет импортировать в интерактивном режиме.
Можно добавить в sys.path
свой каталог. Однако в этом случае либо код программы должен содержать команды изменения значения sys.path
, либо надо править конфигурационный файл операционной системы. В большинстве случаев лучше так не делать.
Поместите файл square.py в тот же каталог, где будет исполняемая программа. Ее код должен включать инструкцию импорта модуля square (при импорте расширение файла не указывается) и вызов той функции и с теми параметрами, которые ввел пользователь. То есть у пользователя надо спросить, площадь какой фигуры он хочет вычислить. Далее запросить у него аргументы для соответствующей функции. Передать их в функцию из модуля square, а полученный оттуда результат вывести на экран.
Примечание. Исполнение модуля как самостоятельного скрипта, а также создание строк документации, которые отображает встроенная в Python функция help()
, будут рассмотрены в курсе объектно-ориентированного программирования.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
целые, вещественные, комплексные — Питошка
Числа в Python 3: целые, вещественные, комплексные. Работа с числами и операции над ними.
Целые числа (int)
Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:
x + y | Сложение |
x — y | Вычитание |
x * y | Умножение |
x / y | Деление |
x // y | Получение целой части от деления |
x % y | Остаток от деления |
-x | Смена знака числа |
abs(x) | Модуль числа |
divmod(x, y) | Пара (x // y, x % y) |
x ** y | Возведение в степень |
pow(x, y[, z]) | xy по модулю (если модуль задан) |
Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти). y
Дополнительные методы
int.bit_length() — количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.
>>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6
int.to_bytes(length, byteorder, *, signed=False) — возвращает строку байтов, представляющих это число.
>>> (1024).to_bytes(2, byteorder='big') b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') b'\xe8\x03'
classmethod int.from_bytes(bytes, byteorder, *, signed=False) — возвращает число из данной строки байтов.
>>> int.from_bytes(b'\x00\x10', byteorder='big') 16 >>> int.from_bytes(b'\x00\x10', byteorder='little') 4096 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680
Системы счисления
Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:
- int([object], [основание системы счисления]) — преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
- bin(x) — преобразование целого числа в двоичную строку.
- hex(х) — преобразование целого числа в шестнадцатеричную строку.
- oct(х) — преобразование целого числа в восьмеричную строку.
Примеры:
>>> a = int('19') # Переводим строку в число >>> b = int('19.5') # Строка не является целым числом Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '19.5' >>> c = int(19.5) # Применённая к числу с плавающей точкой, отсекает дробную часть >>> print(a, c) 19 19 >>> bin(19) '0b10011' >>> oct(19) '0o23' >>> hex(19) '0x13' >>> 0b10011 # Так тоже можно записывать числовые константы 19 >>> int('10011', 2) 19 >>> int('0b10011', 2) 19
Вещественные числа (float)
Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:
>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 0.9999999999999999
Для высокой точности используют другие объекты (например Decimal и Fraction)).
Также вещественные числа не поддерживают длинную арифметику:
>>> a = 3 ** 1000 >>> a + 0.1 Traceback (most recent call last): File "", line 1, in OverflowError: int too large to convert to float
Простенькие примеры работы с числами:
>>> c = 150 >>> d = 12.9 >>> c + d 162.9 >>> p = abs(d - c) # Модуль числа >>> print(p) 137.1 >>> round(p) # Округление 137
Дополнительные методы
float.as_integer_ratio() — пара целых чисел, чьё отношение равно этому числу.
float.is_integer() — является ли значение целым числом.
float.hex() — переводит float в hex (шестнадцатеричную систему счисления).
classmethod float.fromhex(s) — float из шестнадцатеричной строки.
>>> (10.5).hex() '0x1.5000000000000p+3' >>> float.fromhex('0x1.5000000000000p+3') 10.5
Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.
Модуль math предоставляет более сложные математические функции.
>>> import math >>> math.pi 3.141592653589793 >>> math.sqrt(85) 9.219544457292887
Модуль random реализует генератор случайных чисел и функции случайного выбора.
>>> import random >>> random.random() 0.15651968855132303
Комплексные числа (complex)
В Python встроены также и комплексные числа:
>>> x = complex(1, 2) >>> print(x) (1+2j) >>> y = complex(3, 4) >>> print(y) (3+4j) >>> z = x + y >>> print(x) (1+2j) >>> print(z) (4+6j) >>> z = x * y >>> print(z) (-5+10j) >>> z = x / y >>> print(z) (0.44+0.08j) >>> print(x.conjugate()) # Сопряжённое число (1-2j) >>> print(x.imag) # Мнимая часть 2.0 >>> print(x.real) # Действительная часть 1.0 >>> print(x > y) # Комплексные числа нельзя сравнить Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: complex() > complex() >>> print(x == y) # Но можно проверить на равенство False >>> abs(3 + 4j) # Модуль комплексного числа 5.0 >>> pow(3 + 4j, 2) # Возведение в степень (-7+24j)
Также для работы с комплексными числами используется также модуль cmath.
math — Математические функции — документация Python 3.9.5
Этот модуль обеспечивает доступ к математическим функциям, определенным C
стандарт.
Эти функции нельзя использовать с комплексными числами; использовать функции
то же имя из модуля cmath
, если вам требуется поддержка сложных
числа. Различие между функциями, поддерживающими комплексные числа, и
те, которые не делаются, поскольку большинство пользователей не хотят учиться так много
математика, необходимая для понимания комплексных чисел.Получение исключения
вместо сложного результата позволяет раньше обнаруживать неожиданный комплекс
число, используемое в качестве параметра, чтобы программист мог определить, как и почему он
был создан в первую очередь.
Этот модуль предоставляет следующие функции. За исключением случаев, когда явно
в противном случае все возвращаемые значения являются числами с плавающей запятой.
Теоретико-числовые функции и функции представлений
-
математика.
потолок
( x ) Вернуть потолок x , наименьшее целое число, большее или равное x .Если x не является float, делегирует
x .__ ceil __ ()
, который должен вернуть
Интегральное значение
.
-
математика.
гребень
( n , k ) Вернуть количество способов выбора k элементов из n элементов без повторения
и без заказа.Оценивается как
n! / (k! * (n - k)!)
, когдаk <= n
и оценивает
до нуля, когдаk> n
.Также называется биномиальным коэффициентом, потому что он эквивалентен
к коэффициенту k-го члена в полиномиальном разложении
выражение(1 + x) ** n
.Вызывает
TypeError
, если какой-либо из аргументов не является целым числом.
ВызываетValueError
, если любой из аргументов отрицательный.
-
математика.
копия
( x , y ) Вернуть число с плавающей запятой с величиной (абсолютным значением) x , но со знаком
л .На платформах, поддерживающих нули со знаком,copysign (1.0, -0.0)
возвращает -1,0 .
-
математика.
фабрик
( x ) Вернуть абсолютное значение x .
-
математика.
факториал
( x ) Вернуть факториал x как целое число. Вызывает
ValueError
, если x не является целым или
отрицательный.Не рекомендуется, начиная с версии 3.9: прием чисел с плавающей запятой с целыми значениями (например,
5.0
) не рекомендуется.
-
математика.
этаж
( x ) Возвращает пол размером x , наибольшее целое число, меньшее или равное x .
Если x не является float, делегируетx .__ floor __ ()
, который должен вернуть
Интегральное значение
.
-
математика.
fmod
( x , y ) Вернуть
fmod (x, y)
, как определено библиотекой платформы C. Обратите внимание, что
Выражение Pythonx% y
может не возвращать тот же результат. Намерение C
стандартным является то, чтоfmod (x, y)
должно быть точно (математически; до бесконечности
точности), равногоx - n * y
для некоторого целого числа n , так что результат имеет
тот же знак, что и x , и величина меньшеабс (y)
.Pythonx% y
вместо этого возвращает результат со знаком y и может быть неточно вычислимым
для аргументов с плавающей запятой. Например,fmod (-1e-100, 1e100)
это-1e-100
, но
результат Python-1e-100% 1e100
будет1e100-1e-100
, что не может быть
представлен в точности как поплавок и округляется до удивительного1e100
. Для
по этой причине функцияfmod ()
обычно предпочтительнее при работе с
float, тогда как Pythonx% y
предпочтительнее при работе с целыми числами.
-
математика.
frexp
( x ) Вернуть мантиссу и показатель степени x как пару
(m, e)
. м - поплавок
и e - целое число, такое чтоx == m * 2 ** e
точно. Если x равно нулю,
возвращает(0,0, 0)
, иначе0,5 <= abs (m) <1
. Это используется, чтобы «выбрать
отдельно »внутреннее представление поплавка портативным способом.
-
математика.
fsum
( итерация ) Вернуть точную сумму значений с плавающей запятой в итерируемом объекте. Избегает
потеря точности из-за отслеживания нескольких промежуточных частичных сумм:>>> сумма ([. 1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 0,9999999999999999 >>> fsum ([. 1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) 1.0
Точность алгоритма зависит от арифметических гарантий IEEE-754 и
типичный случай, когда режим округления половинный.На некоторых не-Windows
сборки, базовая библиотека C использует сложение с расширенной точностью и может
иногда двойное округление промежуточной суммы, в результате чего ее
младший бит.Для дальнейшего обсуждения и двух альтернативных подходов см. Поваренную книгу ASPN.
рецепты точного суммирования с плавающей запятой.
-
математика.
gcd
( * целые числа ) Возвращает наибольший общий делитель указанных целочисленных аргументов.Если какой-либо из аргументов не равен нулю, то возвращаемое значение является наибольшим.
положительное целое число, которое является делителем всех аргументов. Если все аргументы
равны нулю, то возвращается значение0
.gcd ()
без аргументов
возвращает0
.Изменено в версии 3.9: Добавлена поддержка произвольного количества аргументов. Раньше всего два
аргументы были поддержаны.
-
математика.
isclose
( a , b , * , rel_tol = 1e-09 , abs_tol = 0.0 ) Вернуть
Истина
, если значения a и b близки друг к другу и
Неверно
иначе.Считается ли два значения близкими или нет, определяется в соответствии с
даны абсолютные и относительные допуски.rel_tol - относительный допуск - это максимально допустимая разница.
между a и b относительно большего абсолютного значения a или b .Например, чтобы установить допуск 5%, передайтеrel_tol = 0,05
. По умолчанию
допуск1e-09
, что гарантирует, что два значения совпадают
с точностью до 9 десятичных цифр. rel_tol должен быть больше нуля.abs_tol - минимальный абсолютный допуск - полезен для сравнений рядом с
нуль. abs_tol должен быть не меньше нуля.Если ошибок не происходит, результатом будет:
абс (a-b) <= max (rel_tol * max (abs (a), abs (b)), abs_tol)
.Специальные значения IEEE 754:
NaN
,inf
и-inf
будут
обрабатывается в соответствии с правилами IEEE. В частности,NaN
не считается
близко к любому другому значению, включаяNaN
.inf
и-inf
только
считается близким к себе.См. Также
PEP 485 - Функция проверки примерного равенства
-
математика.
исфинит
( x ) Вернуть
Истина
, если x не является ни бесконечностью, ни NaN, и
Неверно
иначе.(Обратите внимание, что0,0
- это , считающееся конечным.)
-
математика.
isinf
( x ) Вернуть
Истинно
, если x - положительная или отрицательная бесконечность, и
Неверно
иначе.
-
математика.
иснан
( x ) Вернуть
Истина
, если x - NaN (не число), иЛожь
в противном случае.
-
математика.
isqrt
( n ) Вернуть целочисленный квадратный корень неотрицательного целого числа n . Это
пол из точного квадратного корня из n или, что эквивалентно, наибольшего целого числа
a таким образом, что a ² ≤ n .Для некоторых приложений может быть удобнее иметь наименьшее целое число
a таким образом, что n ≤ a ², или, другими словами, потолок
точный квадратный корень из n .Для положительного значения n это можно вычислить с помощью
a = 1 + isqrt (n - 1)
.
-
математика.
куб.м
( * целые числа ) Возвращает наименьшее общее кратное указанных целочисленных аргументов.
Если все аргументы отличны от нуля, то возвращаемое значение является наименьшим.
положительное целое число, кратное всем аргументам. Если какой-либо из аргументов
равно нулю, то возвращается значение0
.лкм ()
без аргументов
возвращает1
.
-
математика.
ldexp
( x , и ) Возврат
x * (2 ** i)
. По сути, это обратная функция
frexp ()
.
-
математика.
мод
( x ) Вернуть дробную и целую части x . Оба результата несут знак
размером x и являются поплавками.
-
математика.
далее после
( x , y ) Вернуть следующее значение с плавающей запятой после x в направлении y .
Если x равно y , вернуть y .
Примеры:
math.nextafter (x, math.inf)
идет вверх: в сторону положительной бесконечности.math.nextafter (x, -math.inf)
идет вниз: в сторону минус бесконечности.математ.nextafter (x, 0.0)
стремится к нулю.math.nextafter (x, math.copysign (math.inf, x))
уходит от нуля.
См. Также
math.ulp ()
.
-
математика.
пермь
( n , k = нет ) Вернуть количество способов выбора k элементов из n элементов
без повторов и по порядку.Оценивается как
n! / (п - к)!
, когдаk <= n
и оценивает
до нуля, когдаk> n
.Если k не указано или None, тогда k по умолчанию n
и функция возвращаетn!
.Вызывает
TypeError
, если какой-либо из аргументов не является целым числом.
ВызываетValueError
, если любой из аргументов отрицательный.
-
математика.
prod
( итерация , * , start = 1 ) Вычислить произведение всех элементов на входе итерируемый .По умолчанию начальное значение для продукта -
1
.Если итерация пуста, вернуть начальное значение. Эта функция
предназначен специально для использования с числовыми значениями и может отклонять
нечисловые типы.
-
математика.
остаток
( x , y ) Вернуть остаток в стиле IEEE 754 x относительно y . Для
конечное x и конечное ненулевое y , это разницаx - n * y
,
гдеn
- ближайшее целое число к точному значению частногоx /
.Если
yx / y
находится ровно посередине между двумя последовательными целыми числами,
ближайший , четное целое число используется дляn
. Остатокr = остаток (x,
, таким образом, всегда удовлетворяет
y)abs (r) <= 0,5 * abs (y)
.Особые случаи соответствуют IEEE 754: в частности, остаток
(x, math.inf)
- это
x для любых конечных x иостаток (x, 0)
и
остаток (math.inf, x)
вызываетValueError
для любых x , отличных от NaN.Если результат операции с остатком равен нулю, этот ноль будет иметь
тот же знак, что и x .На платформах, использующих двоичные числа с плавающей запятой IEEE 754, результат этого
операция всегда точно представима: ошибка округления не вводится.
-
математика.
усечение
( x ) Вернуть
Real
значение x , усеченное до
Integral
(обычно целое число). Делегаты
х.__trunc __ ()
.
-
математика.
ulp
( x ) Вернуть значение младшего бита числа с плавающей запятой x :
Если x - NaN (не число), верните x .
Если x отрицательное, вернуть
ulp (-x)
.Если x - положительная бесконечность, верните x .
Если x равно нулю, вернуть наименьшее положительное значение.
денормализованное представимое число с плавающей запятой (меньше минимального положительного
нормализованный с плавающей запятой,сис.float_info.min
).Если x равно наибольшему положительному представимому веществу с плавающей запятой,
вернуть значение младшего бита x , так что первый
float меньше x составляетx - ulp (x)
.В противном случае ( x - положительное конечное число) вернуть значение наименьшего
значащий бит x , так что первое число с плавающей запятой больше x
равноx + ulp (x)
.
ULP означает «Единица на последнем месте».
См. Также
math.nextafter ()
иsys.float_info.epsilon
.
Обратите внимание, что frexp ()
и modf ()
имеют другой шаблон вызова / возврата
чем их эквиваленты в C: они принимают единственный аргумент и возвращают пару
значения, вместо того, чтобы возвращать их второе возвращаемое значение через "output"
параметр ’(в Python такого нет).
Для функций ceil ()
, floor ()
и modf ()
обратите внимание, что все
числа с плавающей запятой достаточно большой величины являются точными целыми числами.Поплавки Python обычно несут не более 53 бита точности (такая же, как у
платформа C двойного типа), в этом случае любой поплавок x с абс (x)> = 2 ** 52
обязательно не имеет дробных битов.
Степенные и логарифмические функции
-
математика.
эксп.
( x ) Возврат e в степени x , где e = 2,718281… это основание
натуральных логарифмов. Обычно это более точно, чем математика.e ** x
илиpow (math.e, x)
.
-
математика.
экспм1
( x ) Возврат e в степени x , минус 1. Здесь e - основание натурального
логарифмы. Для малых чисел с плавающей запятой x вычитание вexp (x) - 1
может привести к значительной потере точности;expm1 ()
функция предоставляет способ вычислить это количество с полной точностью:>>> из математического импорта exp, expm1 >>> exp (1e-5) - 1 # дает результат с точностью до 11 разряда 1.0000050000069649e-05 >>> expm1 (1e-5) # результат с полной точностью 1.0000050000166668e-05
-
математика.
журнал
( x [, основание ]) С одним аргументом верните натуральный логарифм x (с основанием e ).
С двумя аргументами вернуть логарифм x к заданному основанию ,
рассчитывается какlog (x) / log (base)
.
-
математика.
log1p
( x ) Вернуть натуральный логарифм 1 + x (основание e ). В
результат рассчитывается с точностью до x , близкой к нулю.
-
математика.
лог2
( x ) Вернуть логарифм по основанию 2 x . Обычно это более точно, чем
журнал (x, 2)
.См. Также
int.bit_length ()
возвращает количество битов, необходимых для представления
целое число в двоичном формате, исключая знак и ведущие нули.
-
математика.
лог10
( x ) Вернуть десятичный логарифм x . Обычно это более точно
чемlog (x, 10)
.
-
математика.
pow
( x , y ) Возврат
x
в степениy
. Далее следуют исключительные случаи
Приложение «F» стандарта C99, насколько это возможно. В частности,
pow (1.0, x)
иpow (x, 0.0)
всегда возвращают1.0
, даже
когдаx
- это ноль или NaN. Если иx
, иy
конечны,
x
отрицательно, аy
не является целым числом, тогдаpow (x, y)
не определено и вызываетValueError
.В отличие от встроенного оператора
**
,math.pow ()
преобразует оба
его аргументы для типас плавающей запятой
. Используйте**
или встроенный
pow ()
функция для вычисления точных целочисленных степеней.
-
математика.
кв.
( x ) Возвратите квадратный корень из x .
Тригонометрические функции
-
математика.
acos
( x ) Вернуть арккосинус x в радианах. Результат находится между
0
и
пи
.
-
математика.
asin
( x ) Вернуть арксинус x в радианах.Результат находится между
-pi / 2
и
пи / 2
.
-
математика.
атан
( x ) Вернуть арктангенс x в радианах. Результат находится между
-pi / 2
и
пи / 2
.
-
математика.
атан2
( y , x ) Вернуть
atan (y / x)
в радианах. Результат находится между-pi
иpi
.Вектор в плоскости от начала координат до точки(x, y)
составляет этот угол
с положительной осью X. Смыслatan2 ()
в том, что признаки обоих
ему известны входные данные, поэтому он может вычислить правильный квадрант для угла.
Например,atan (1)
иatan2 (1, 1)
оба равныpi / 4
, ноatan2 (-1,
равно
-1)-3 * pi / 4
.
-
математика.
cos
( x ) Вернуть косинус x радиан.
-
математика.
расстояние
( p , q ) Вернуть евклидово расстояние между двумя точками p и q , каждая
заданная как последовательность (или итерация) координат. Две точки
должен иметь такой же размер.Примерно эквивалентно:
sqrt (сумма ((px - qx) ** 2,0 для px, qx в zip (p, q)))
-
математика.
гипотеза
( * координаты ) Вернуть евклидову норму,
sqrt (сумма (x ** 2 для x в координатах))
.Это длина вектора от начала координат до точки
задается координатами.Для двумерной точки
(x, y)
это эквивалентно вычислению
гипотенуза прямоугольного треугольника по теореме Пифагора,
sqrt (x * x + y * y)
.Изменено в версии 3.8: Добавлена поддержка n-мерных точек. Раньше только двое
размерный случай был поддержан.
-
математика.
sin
( x ) Вернуть синус x радиан.
-
математика.
желто-коричневый
( x ) Вернуть тангенс x радиан.
Угловое преобразование
-
математика.
градусов
( x ) Преобразование угла x из радианов в градусы.
-
математика.
радиан
( x ) Преобразование угла x из градусов в радианы.
Гиперболические функции
Гиперболические функции
являются аналогами тригонометрических функций, основанных на гиперболах
вместо кружков.
-
математика.
acosh
( x ) Вернуть обратный гиперболический косинус x .
-
математика.
асинь
( x ) Вернуть обратный гиперболический синус x .
-
математика.
атанх
( x ) Вернуть арктангенс гиперболического значения x .
-
математика.
cosh
( x ) Вернуть гиперболический косинус x .
-
математика.
sinh
( x ) Вернуть гиперболический синус x .
-
математика.
танх
( x ) Вернуть гиперболический тангенс x .
Специальные функции
-
математика.
эрф
( x ) Вернуть функцию ошибки в
х .Функцию
erf ()
можно использовать для вычисления традиционных статистических данных.
функции, такие как кумулятивное стандартное нормальное распределение:def phi (x): 'Кумулятивная функция распределения для стандартного нормального распределения' return (1.0 + erf (x / sqrt (2.0))) / 2.0
-
математика.
erfc
( x ) Вернуть дополнительную функцию ошибок при x . Дополнительная ошибка
функция определяется как
1.0 - erf (x)
. Он используется для больших значений x , где вычитание
от одного вызовет потерю значимости.
-
математика.
гамма
( x ) Вернуть гамма-функцию в
х .
-
математика.
lgamma
( x ) Вернуть натуральный логарифм абсолютного значения гаммы.
функция при x .
Константы
-
математика.
пи
Математическая константа π = 3,141592…, с доступной точностью.
-
математика.
e
Математическая константа e = 2,718281…, с доступной точностью.
-
математика.
тау
Математическая константа τ = 6,283185…, с доступной точностью.
Тау - постоянная окружности, равная 2 π , отношение длины окружности к
его радиус. Чтобы узнать больше о Тау, посмотрите видео Ви Харта Pi is (still)
Неправильно, и начни праздновать
Тау день, съев в два раза больше пирога!
-
математика.
инф
Положительная бесконечность с плавающей запятой.(Для отрицательной бесконечности используйте
-math.inf
.) Эквивалент выходуfloat ('inf')
.
-
математика.
нан
Значение с плавающей запятой, «не число» (NaN). Эквивалентно выходу
с плавающей запятой ('nan')
.
Детали реализации CPython: Модуль math
состоит в основном из тонких оберток вокруг платформы C.
математические библиотечные функции. Поведение в исключительных случаях соответствует Приложению F к
стандарт C99, где это необходимо.Текущая реализация повысит
ValueError
для недопустимых операций, таких как sqrt (-1.0)
или log (0.0)
(где Приложение F C99 рекомендует сигнализировать о недопустимой операции или делении на ноль),
и OverflowError
для результатов, которые переполняются (например,
exp (1000.0)
). NaN не будет возвращено ни одной из функций.
выше, если один или несколько входных аргументов не были NaN; в этом случае,
большинство функций вернут NaN, но (опять же после приложения F C99) там
есть некоторые исключения из этого правила, например pow (float ('nan'), 0.0)
или
гипотеза (float ('nan'), float ('inf'))
.
Обратите внимание, что Python не пытается отличить сигнальные NaN от
тихие NaN, и поведение при передаче сигналов NaN остается неопределенным.
Типичное поведение - рассматривать все NaN, как если бы они были тихими.
См. Также
- Module
cmath
Комплексные числовые версии многих из этих функций.
чисел в Python - настоящий Python
Чтобы хорошо программировать, не нужно быть математиком.По правде говоря, немногим программистам нужно знать больше, чем основы алгебры. Конечно, то, сколько математики вам нужно знать, зависит от приложения, над которым вы работаете. В целом, уровень математики, необходимый для программиста, ниже, чем вы могли ожидать. Хотя математика и компьютерное программирование не так взаимосвязаны, как некоторые думают, чисел являются неотъемлемой частью любого языка программирования, и Python не исключение.
Из этого руководства вы узнаете, как:
- Создать целых чисел и чисел с плавающей запятой
- Округление чисел до заданного количества десятичных знаков
- Форматирование и отображение чисел в строках
Приступим!
Примечание: Это руководство адаптировано из главы «Числа и математика» в книге Основы Python: практическое введение в Python 3 .
В книге используется встроенный редактор IDLE Python для создания и редактирования файлов Python и взаимодействия с оболочкой Python, поэтому в этом руководстве вы увидите ссылки на встроенные инструменты отладки IDLE. Однако у вас не должно возникнуть проблем с запуском примера кода из редактора и среды по вашему выбору.
Бесплатный бонус: 5 мыслей о Python Mastery, бесплатный курс для разработчиков Python, который показывает вам план действий и образ мышления, которые вам понадобятся, чтобы вывести свои навыки Python на новый уровень.
Целые числа и числа с плавающей запятой
Python имеет три встроенных числовых типа данных: целые числа, числа с плавающей запятой и комплексные числа. В этом разделе вы узнаете о целых числах и числах с плавающей запятой, которые являются двумя наиболее часто используемыми типами чисел. Вы узнаете о комплексных числах в следующем разделе.
Целые числа
Целое число - целое число без десятичных знаков. Например, 1
- целое число, а 1.0
- нет. Имя для целочисленного типа данных - int
, которое вы можете увидеть с помощью type ()
:
.
>>>
>>> тип (1)
<класс 'int'>
Вы можете создать целое число, набрав желаемое число. Например, следующее присваивает целое число 25
переменной num
:
Когда вы создаете такое целое число, значение 25
называется целочисленным литералом , потому что целое число буквально вводится в код.
Возможно, вы уже знакомы с тем, как преобразовать строку, содержащую целое число, в число с помощью int ()
. Например, следующее преобразует строку "25"
в целое число 25
:
int ("25")
не является целочисленным литералом, поскольку целочисленное значение создается из строки.
Когда вы пишете большие числа от руки, вы обычно группируете цифры в группы по три, разделенные запятой или десятичной точкой. Число 1000000 читать намного легче, чем число 1000000.
В Python нельзя использовать запятые для группировки цифр в целочисленных литералах, но можно использовать символы подчеркивания ( _
). Оба следующих способа являются допустимыми способами представления числа один миллион в виде целочисленного литерала:
>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
Нет предела тому, насколько большим может быть целое число, что может быть удивительно, учитывая, что у компьютеров конечный объем памяти. Попробуйте ввести наибольшее число, которое вы можете придумать, в интерактивном окне IDLE.Python справится с этим без проблем!
Числа с плавающей запятой
Число с плавающей запятой или с плавающей запятой для краткости - это число с десятичной запятой. 1,0
- это число с плавающей запятой, как и -2,75
. Имя типа данных с плавающей запятой - float
:
>>>
>>> тип (1.0)
<класс 'float'>
Подобно целым числам, числа с плавающей запятой могут быть созданы из литералов с плавающей запятой или путем преобразования строки в число с плавающей запятой с помощью float ()
:
>>>
>>> float ("1.25 ")
1,25
Есть три способа представить литерал с плавающей запятой. Каждое из следующих действий создает литерал с плавающей запятой со значением один миллион:
>>>
>>> 1000000.0
1000000,0
>>> 1_000_000.0
1000000,0
>>> 1e6
1000000,0
Первые два способа аналогичны двум методам создания целочисленных литералов. Третий подход использует нотацию E для создания литерала с плавающей запятой.
Примечание: обозначение E является сокращением от экспоненциального представления .Возможно, вы видели, что это обозначение используется калькуляторами для представления чисел, которые слишком велики для отображения на экране.
Чтобы написать литерал с плавающей запятой в нотации E, введите число, за которым следует буква e
, а затем еще одно число. Python берет число слева от e
и умножает его на 10
, возведенное в степень числа после e
. Таким образом, 1e6
эквивалентно 1 × 10⁶.
Python также использует нотацию E для отображения больших чисел с плавающей запятой:
>>>
>>> 200000000000000000.0
2e + 17
Поплавок 200000000000000000.0
отображается как 2e + 17
. Знак +
указывает, что показатель степени 17
является положительным числом. Вы также можете использовать отрицательные числа в качестве экспоненты:
Литерал 1e-4
интерпретируется как 10
в степени -4
, что составляет 1/10000, или 0,0001
.
В отличие от целых чисел, числа с плавающей запятой имеют максимальный размер. Максимальное число с плавающей запятой зависит от вашей системы, но что-то вроде 2e400
должно выходить за рамки возможностей большинства машин. 2e400
- это 2 × 10⁴⁰⁰, что намного больше, чем общее количество атомов во Вселенной!
При достижении максимального числа с плавающей запятой Python возвращает специальное значение с плавающей запятой, inf
:
inf
означает бесконечность, и это просто означает, что число, которое вы пытались создать, превышает максимальное значение с плавающей запятой, разрешенное на вашем компьютере. Тип inf
по-прежнему с плавающей запятой
:
>>>
>>> п = 2e400
>>> п
инф
>>> тип (n)
<класс 'float'>
Python также использует -inf
, что означает отрицательную бесконечность и представляет собой отрицательное число с плавающей запятой, которое превышает минимальное число с плавающей запятой, разрешенное на вашем компьютере:
Вы, вероятно, не будете часто встречать inf
и -inf
как программист, если вы не работаете регулярно с очень большими числами.
Проверьте свое понимание
Разверните блок ниже, чтобы проверить свое понимание:
Напишите программу, которая создает две переменные: num1
и num2
. И num1
, и num2
должны быть назначены целочисленным литералом 25000000
, один написан с подчеркиванием, а другой без. Выведите num1
и num2
на двух отдельных строках.
Вы можете развернуть блок ниже, чтобы увидеть решение:
Сначала присвойте значение 25000000
num1
без подчеркивания:
Затем в новой строке присвойте значение 25_000_000
переменной num2
:
Распечатайте обе переменные в отдельных строках, передав каждую переменную в отдельные вызовы print ()
:
В выводе видно, что оба числа совпадают:
Хотя обеим переменным присвоено значение 25000000
, запись значения с использованием подчеркивания для группировки цифр значительно упрощает человеку быстрое определение числа.Больше не надо щуриться в экран и считать нули!
Когда будете готовы, можете переходить к следующему разделу.
Арифметические операторы и выражения
В этом разделе вы узнаете, как выполнять базовые арифметические операции, такие как сложение, вычитание, умножение и деление, с числами в Python. Попутно вы узнаете некоторые правила написания математических выражений в коде.
Дополнение
Сложение производится оператором +
:
Два числа по обе стороны от оператора +
называются операндами .В приведенном выше примере оба операнда являются целыми числами, но операнды не обязательно должны быть одного типа.
Вы можете без проблем добавить int
к float
:
Обратите внимание, что результат 1.0 + 2
равен 3.0
, что соответствует с плавающей запятой
. Каждый раз, когда к числу добавляется с плавающей запятой
, результатом будет еще с плавающей точкой
. Сложение двух целых чисел всегда приводит к int
.
Примечание: PEP 8 рекомендует разделять оба операнда от оператора пробелом.
Python может нормально оценить 1 + 1
, но 1 + 1
является предпочтительным форматом, поскольку его обычно легче читать. Это практическое правило применимо ко всем операторам в этом разделе.
Вычитание
Чтобы вычесть два числа, просто поставьте между ними оператор -
:
>>>
>>> 1 - 1
0
>>> 5,0 - 3
2.0
Как и при сложении двух целых чисел, вычитание двух целых чисел всегда приводит к int
.Если одним из операндов является с плавающей запятой
, результатом также будет с плавающей запятой
.
Оператор -
также используется для обозначения отрицательных чисел:
Вы можете вычесть отрицательное число из другого числа, но, как вы можете видеть ниже, это иногда может сбивать с толку:
>>>
>>> 1 - -3
4
>>> 1 --3
4
>>> 1- -3
4
>>> 1--3
4
Из четырех приведенных выше примеров первый наиболее совместим с PEP 8.Тем не менее, вы можете заключить -3
в круглые скобки, чтобы было еще яснее, что второй -
изменяет 3
:
Использование круглых скобок - хорошая идея, потому что они делают ваш код более ясным. Компьютеры выполняют код, но люди читают код. Все, что вы можете сделать, чтобы ваш код было легче читать и понимать, - это хорошо.
Умножение
Чтобы умножить два числа, используйте оператор *
:
>>>
>>> 3 * 3
9
>>> 2 * 8.0
16.0
Тип числа, полученного при умножении, подчиняется тем же правилам, что и сложение и вычитание. Умножение двух целых чисел дает int
, а умножение числа на с плавающей запятой
дает с плавающей запятой
.
Дивизия
Оператор /
используется для деления двух чисел:
>>>
>>> 9/3
3.0
>>> 5,0 / 2
2,5
В отличие от сложения, вычитания и умножения, деление с оператором /
всегда возвращает с плавающей точкой
.Если вы хотите убедиться, что после деления двух чисел вы получите целое число, вы можете использовать int ()
для преобразования результата:
Имейте в виду, что int ()
отбрасывает любую дробную часть числа:
5.0 / 2
возвращает число с плавающей запятой 2.5
, а int (2.5)
возвращает целое число 2
с удаленным .5
.
Целочисленное деление
Если запись int (5.0 / 2)
кажется вам немного затянутой, Python предоставляет второй оператор деления, называемый оператором целочисленного деления ( //
), также известный как деление по полу. Оператор :
>>>
>>> 9 // 3
3
>>> 5.0 // 2
2.0
>>> -3 // 2
-2
Оператор //
сначала делит число слева на число справа, а затем округляет до целого числа. Это может не дать ожидаемого значения, когда одно из чисел отрицательное.
Например, -3 // 2
возвращает -2
. Сначала -3
делится на 2
, чтобы получить -1,5
. Затем -1,5
округляется до -2
. С другой стороны, 3 // 2
возвращает 1
, потому что оба числа положительны.
Приведенный выше пример также показывает, что //
возвращает число с плавающей запятой, когда один из операндов с плавающей запятой
. Вот почему 9 // 3
возвращает целое число 3
, а 5.0 // 2
возвращает с плавающей запятой
2.0
.
Давайте посмотрим, что произойдет, если вы попытаетесь разделить число на 0
:
>>>
>>> 1/0
Отслеживание (последний вызов последний):
Файл "", строка 1, в
ZeroDivisionError: деление на ноль
Python дает вам ZeroDivisionError
, сообщая вам, что вы только что пытались нарушить фундаментальное правило вселенной.
Экспоненты
Вы можете возвести число в степень с помощью оператора **
:
>>>
>>> 2 ** 2
4
>>> 2 ** 3
8
>>> 2 ** 4
16
Показатели не обязательно должны быть целыми числами. Также они могут быть поплавками:
>>>
>>> 3 ** 1,5
5,196152422706632
>>> 9 ** 0,5
3.0
Возведение числа в степень 0,5
аналогично извлечению квадратного корня, но обратите внимание, что хотя квадратный корень из 9
является целым числом, Python возвращает с плавающей запятой
3.0
.
Для положительных операндов оператор **
возвращает int
, если оба операнда являются целыми числами, и с плавающей запятой
, если любой из операндов является числом с плавающей запятой.
Вы также можете возводить числа в отрицательную степень:
>>>
>>> 2 ** -1
0,5
>>> 2 ** -2
0,25
Возведение числа в отрицательную степень аналогично делению 1
на число в положительной степени.Итак, 2 ** -1
совпадает с 1 / (2 ** 1)
, что совпадает с 1/2
или 0,5
. Точно так же 2 ** -2
совпадает с 1 / (2 ** 2)
, что совпадает с 1/4
или 0,25
.
Оператор модуля
Оператор %
или модуль возвращает остаток от деления левого операнда на правый операнд:
>>>
>>> 5% 3
2
>>> 20% 7
6
>>> 16% 8
0
3
делит 5
один раз с остатком 2
, поэтому 5% 3
равно 2
.Аналогично, 7
делит 20
дважды с остатком 6
. В последнем примере 16
делится на 8
, поэтому 16% 8
равно 0
. Каждый раз, когда число слева от %
делится на число справа, результат будет 0
.
Одно из наиболее распространенных применений %
- определить, делится ли одно число на другое. Например, число n
даже тогда и только тогда, когда n% 2
равно 0
.Как вы думаете, что возвращает 1% 0
? Давай попробуем:
>>>
>>> 1% 0
Отслеживание (последний вызов последний):
Файл "", строка 1, в
ZeroDivisionError: целочисленное деление или по модулю нуля
Это имеет смысл, потому что 1% 0
дает остаток от деления 1
на 0
. Но вы не можете разделить 1
на 0
, поэтому Python вызывает ZeroDivisionError
.
Примечание: Когда вы работаете в интерактивном окне IDLE, такие ошибки, как ZeroDivisionError
, не вызывают особых проблем.Отображается ошибка и появляется новое приглашение, позволяющее продолжить писать код.
Однако, когда Python обнаруживает ошибку при выполнении сценария, выполнение останавливается. Другими словами, программа вылетает из . В главе 8 книги Основы Python вы узнаете, как обрабатывать ошибки, чтобы ваши программы не зависали неожиданно.
Все становится немного сложнее, если вы используете оператор %
с отрицательными числами:
>>>
>>> 5% -3
-1
>>> -5% 3
1
>>> -5% -3
-2
Хотя эти результаты на первый взгляд могут шокировать, они являются результатом четко определенного поведения в Python.Чтобы вычислить остаток r
от деления числа x
на число y
, Python использует уравнение r = x - (y * (x // y))
.
Например, чтобы найти 5% -3
, Python сначала находит (5 // -3)
. Поскольку 5 / -3
составляет около -1,67
, это означает, что 5 // -3
равно -2
. Теперь Python умножает это на -3
, чтобы получить 6
. Наконец, Python вычитает 6
из 5
, чтобы получить -1
.
Арифметические выражения
Вы можете комбинировать операторы для формирования сложных выражений. Выражение - это комбинация чисел, операторов и скобок, которую Python может вычислить или вычислить , чтобы вернуть значение.
Вот несколько примеров арифметических выражений:
>>>
>>> 2 * 3 - 1
5
>>> 4/2 + 2 ** 3
10.0
>>> -1 + (-3 * 2 + 4)
-3
Правила вычисления выражений такие же, как и в повседневной арифметике.В школе вы, наверное, выучили эти правила под названием , порядок операций .
Операторы *
, /
, //
и %
имеют равный приоритет или приоритет в выражении, и каждый из них имеет более высокий приоритет, чем +
и -
операторов. Вот почему 2 * 3 - 1
возвращает 5
, а не 4
. 2 * 3
оценивается первым, потому что *
имеет более высокий приоритет, чем оператор -
.
Вы можете заметить, что выражения в предыдущем примере не соответствуют правилу помещения пробелов по обе стороны от всех операторов. PEP 8 говорит о пробелах в сложных выражениях:
Если используются операторы с разными приоритетами, рассмотрите возможность добавления пробелов вокруг операторов с самым низким приоритетом (-ами). Используйте свое собственное суждение; однако никогда не используйте более одного пробела и всегда используйте одинаковое количество пробелов с обеих сторон двоичного оператора.(Источник)
Еще одна хорошая практика - использовать круглые скобки для обозначения порядка, в котором должны выполняться операции, даже если скобки не нужны. Например, (2 * 3) - 1
потенциально яснее, чем 2 * 3 - 1.
Заставьте Python лгать
Как вы думаете, что такое 0,1 + 0,2
? Ответ: 0,3
, верно? Посмотрим, что скажет об этом Python. Попробуйте это в интерактивном окне:
>>>
>>> 0.1 + 0,2
0,30000000000000004
Ну вот и все. . . почти правильно. Что, черт возьми, здесь происходит? Это ошибка в Python?
Нет, это не ошибка! Это ошибка представления с плавающей запятой , и она не имеет ничего общего с Python. Это связано с тем, как числа с плавающей запятой хранятся в памяти компьютера.
Число 0,1
можно представить в виде дроби 1/10
. И число 0,1
, и его дробь 1/10
являются десятичными представлениями или десятичными представлениями .Компьютеры, однако, хранят числа с плавающей запятой в представлении с основанием 2, чаще называемом двоичным представлением .
При представлении в двоичном формате с десятичным числом 0,1
происходит что-то знакомое, но, возможно, неожиданное. Дробь 1/3
не имеет конечного десятичного представления. То есть 1/3 = 0,3333 ...
с бесконечным числом 3 после десятичной точки. То же самое происходит с дробью 1/10
в двоичной системе.
Двоичное представление 1/10
представляет собой следующую бесконечно повторяющуюся дробь:
0.00011001100110011001100110011 ...
Компьютеры имеют ограниченную память, поэтому число 0,1
должно храниться как приблизительное, а не как его истинное значение. Сохраняемое приближение немного выше фактического значения и выглядит так:
0,1000000000000000055511151231257827021181583404541015625
Вы могли заметить, однако, что при запросе напечатать 0,1
, Python печатает 0,1
, а не приблизительное значение, указанное выше:
Python не просто обрезает цифры в двоичном представлении для 0.1
. То, что происходит на самом деле, немного более тонкое.
Поскольку приближение 0,1
в двоичном формате - это всего лишь приближение, вполне возможно, что более одного десятичного числа имеют одинаковое двоичное приближение.
Например, и 0.1
, и 0.10000000000000001
имеют одинаковое двоичное приближение. Python выводит кратчайшее десятичное число, которое разделяет приближение.
Это объясняет, почему в первом примере этого раздела 0.1 + 0,2
не равно 0,3
. Python складывает двоичные приближения для 0,1
и 0,2
, что дает число , а не двоичное приближение для 0,3
.
Если от всего этого начинает кружиться голова, не волнуйтесь! Если вы не пишете программы для финансов или научных вычислений, вам не нужно беспокоиться о неточности арифметики с плавающей запятой.
Математические функции и числовые методы
Python имеет несколько встроенных функций, которые можно использовать для работы с числами.В этом разделе вы узнаете о трех наиболее распространенных:
-
round ()
, для округления чисел до некоторого количества десятичных знаков -
abs ()
, для получения абсолютного значения числа -
pow ()
, для возведения числа в некоторую степень
Вы также узнаете о методе, который можно использовать с числами с плавающей запятой, чтобы проверить, имеют ли они целочисленное значение.
круглые числа с округлением
()
Вы можете использовать round ()
для округления числа до ближайшего целого:
>>>
>>> круглый (2.3)
2
>>> круглый (2.7)
3
round ()
имеет неожиданное поведение, когда число заканчивается на .5
:
>>>
>>> круглый (2,5)
2
>>> круглый (3,5)
4
2,5
округляется до 2
, а 3,5
округляется до 4
. Большинство людей ожидают, что число, оканчивающееся на ,5
, будет округлено в большую сторону, поэтому давайте подробнее рассмотрим, что здесь происходит.
Python 3 округляет числа в соответствии со стратегией, называемой округлением связей до четных.Галстук - это любое число, последняя цифра которого равна пяти. 2,5
и 3,1415
являются связями, а 1,37
- нет.
Когда вы округляете связи до четного, вы сначала смотрите на цифру, равную одному десятичному знаку, слева от последней цифры в галстуке. Если эта цифра четная, вы округлите ее в меньшую сторону. Если цифра нечетная, округлите в большую сторону. Поэтому 2,5
округляется до 2
и 3,5
округляется до 4
.
Примечание. Округление связей до четного - это стратегия округления, рекомендованная для чисел с плавающей запятой IEEE (Институт инженеров по электротехнике и электронике), поскольку она помогает ограничить влияние округления на операции с большим количеством чисел.
IEEE поддерживает стандарт под названием IEEE 754 для работы с числами с плавающей запятой на компьютере. Он был опубликован в 1985 году и до сих пор широко используется производителями оборудования.
Вы можете округлить число до заданного количества десятичных знаков, передав второй аргумент функции round ()
:
>>>
>>> круглый (3,14159, 3)
3,142
>>> круглый (2.71828, 2)
2,72
Число 3,14159
округляется до трех десятичных знаков, чтобы получить 3.142
, а число 2,71828
округляется до двух десятичных знаков, чтобы получить 2,72
.
Второй аргумент round ()
должен быть целым числом. Если это не так, Python вызывает TypeError
:
.
>>>
>>> круглый (2,65, 1,4)
Отслеживание (последний вызов последний):
Файл "", строка 1, в
круглый (2,65, 1,4)
TypeError: объект float нельзя интерпретировать как целое число
Иногда round ()
дает неправильный ответ:
>>>
>>> # Ожидаемое значение: 2.68
>>> круглый (2,675, 2)
2,67
2,675
- это ничья, потому что оно находится ровно посередине между числами 2,67
и 2,68
. Поскольку Python округляет до ближайшего четного числа, можно ожидать, что round (2,675, 2)
вернет 2,68
, но вместо этого он вернет 2,67
. Эта ошибка является результатом ошибки представления с плавающей запятой, а не ошибки в round ()
.
Работа с числами с плавающей запятой может вызывать разочарование, но это разочарование не характерно для Python.Все языки, реализующие стандарт с плавающей запятой IEEE, имеют одни и те же проблемы, включая C / C ++, Java и JavaScript.
Однако в большинстве случаев небольшие ошибки, встречающиеся с числами с плавающей запятой, незначительны, и результаты round ()
совершенно полезны.
Найдите абсолютное значение с помощью
abs ()
Абсолютное значение числа n равно n , если n положительно, и - n , если n отрицательно.Например, абсолютное значение 3
равно 3
, а абсолютное значение -5
равно 5
.
Чтобы получить абсолютное значение числа в Python, вы используете abs ()
:
>>>
>>> абс (3)
3
>>> абс (-5,0)
5.0
abs ()
всегда возвращает положительное число того же типа, что и его аргумент. То есть абсолютное значение целого числа всегда является положительным целым числом, а абсолютное значение числа с плавающей запятой всегда является положительным числом с плавающей запятой.
Повышение мощности с помощью
pow ()
Ранее вы узнали, как возвести число в степень с помощью оператора **
. Вы также можете использовать pow ()
для достижения того же результата.
pow ()
принимает два аргумента. Первый аргумент - это основание , , или число, которое нужно возвести в степень, а второй аргумент - это показатель степени , , или степень, до которой число должно быть возведено в степень.
Например, следующее использует pow ()
для возведения 2
в степень 3
:
Как и в случае **
, показатель степени в pow ()
может быть отрицательным:
Итак, в чем разница между **
и pow ()
?
Функция pow ()
принимает необязательный третий аргумент, который вычисляет первое число, возведенное в степень второго числа, а затем берет модуль по модулю относительно третьего числа.Другими словами, pow (x, y, z)
эквивалентно (x ** y)% z
.
Вот пример, в котором x = 2
, y = 3
и z = 2
:
Сначала 2
возводится в степень 3
, чтобы получить 8
. Затем вычисляется 8% 2
, что составляет 0
, потому что 2
делит 8
без остатка.
Проверить, встроен ли поплавок
Возможно, вы знакомы со строковыми методами, такими как .lower ()
, .upper ()
и .find ()
. Целые числа и числа с плавающей запятой также имеют методы.
Числовые методы используются нечасто, но есть один, который может быть полезен. Числа с плавающей запятой имеют метод .is_integer ()
, который возвращает Истина
, если число целое - это означает, что у него нет дробной части - и в противном случае возвращает Ложь
:
>>>
>>> число = 2,5
>>> num.is_integer ()
Ложь
>>> число = 2.0
>>> num.is_integer ()
Правда
Одно из применений .is_integer ()
- для проверки пользовательского ввода. Например, если вы пишете приложение для онлайн-заказа пиццерии, вам нужно проверить, является ли количество пицц, вводимых клиентом, целым числом.
Функции round ()
, abs ()
и pow ()
являются встроенными функциями, то есть вам не нужно ничего импортировать, чтобы использовать их. Но эти три функции едва касаются всех функций, доступных для работы с числами в Python.
Чтобы получить еще больше удовольствия от математики, ознакомьтесь с математическим модулем Python: все, что вам нужно знать!
Проверьте свое понимание
Разверните блок ниже, чтобы проверить свое понимание:
Напишите программу, которая просит пользователя ввести число, а затем отображает это число, округленное до двух десятичных знаков. При запуске ваша программа должна выглядеть так:
Введите число: 5,432
5,432 с округлением до 2 знаков после запятой составляет 5,43
Вы можете развернуть блок ниже, чтобы увидеть решение:
Чтобы получить ввод от пользователя, передайте приглашение input ()
:
user_input = input («Введите число:»)
Обратите внимание на пробел в конце строки приглашения.Это гарантирует, что между текстом, введенным пользователем, когда он начинает печатать, и двоеточием в приглашении будет пробел.
Значение, возвращаемое функцией input ()
, является строкой, поэтому перед округлением числа необходимо преобразовать его в число с плавающей запятой:
Имейте в виду, что приведенный выше код предполагает, что строка user_input
действительно содержит числовое значение, а не какой-либо другой текст.
Примечание: Если user_input
действительно содержит нечисловой текст, то будет вызвана ошибка ValueError
.Ознакомьтесь с исключениями Python: Введение для получения информации о том, как обрабатывать такие типы ошибок.
Теперь вы можете использовать round ()
для округления значения до двух десятичных знаков:
округленное_число = круглое (число; 2)
Помните, что первым аргументом функции round ()
должно быть число, которое нужно округлить. Второй аргумент - это количество десятичных знаков, до которых нужно округлить.
Наконец, вы можете распечатать вывод, вставив rounded_num
в строку f:
print (f "{число} с округлением до 2 десятичных знаков равно {округленное_число}")
round ()
- отличный способ округления значений, но если вы округляете только значения для их отображения, вы можете рассмотреть возможность использования методов, описанных в следующем разделе.
Когда будете готовы, можете переходить к следующему разделу.
Печать чисел в стиле
Для отображения чисел пользователю необходимо вставить числа в строку. Вы можете сделать это с помощью f-строк, заключив переменную, присвоенную номеру, в фигурные скобки:
>>>
>>> п = 7,125
>>> f "Значение n равно {n}"
"Значение n равно 7,125"
Эти фигурные скобки поддерживают простой язык форматирования, который можно использовать для изменения внешнего вида значения в окончательной отформатированной строке.
Например, чтобы отформатировать значение n
в приведенном выше примере до двух десятичных знаков, замените содержимое фигурных скобок в строке f на {n: .2f}
:
>>>
>>> п = 7,125
>>> f "Значение n равно {n: .2f}"
"Значение n равно 7,12"
Двоеточие (:
) после переменной n
указывает, что все, что находится после него, является частью спецификации форматирования. В этом примере спецификация форматирования - .2f
.
.2
в .2f
округляет число до двух десятичных знаков, а f
указывает Python отображать n
как число с фиксированной точкой . Это означает, что число отображается ровно с двумя десятичными знаками, даже если исходное число имеет меньше десятичных знаков.
Когда n = 7,125
, результат {n: .2f}
будет 7,12
. Как и в случае с round ()
, Python округляет связи даже при форматировании чисел внутри строк.Итак, если вы замените n = 7,125
на n = 7,126
, то результат {n: .2f}
будет 7,13
:
>>>
>>> п = 7,126
>>> f "Значение n равно {n: .2f}"
«Значение n равно 7,13».
Чтобы округлить до одного десятичного знака, замените .2
на .1
:
>>>
>>> п = 7,126
>>> f "Значение n равно {n: .1f}"
"Значение n равно 7,1"
Когда вы форматируете число как фиксированную точку, оно всегда отображается с указанным точным количеством десятичных знаков:
>>>
>>> п = 1
>>> f "Значение n равно {n :.2f} "
"Значение n равно 1.00"
>>> f "Значение n равно {n: .3f}"
"Значение n равно 1.000"
Вы можете вставлять запятые, чтобы сгруппировать целую часть больших чисел по тысячам с опцией ,
:
>>>
>>> п = 1234567890
>>> f "Значение n равно {n :,}"
'Значение n равно 1,234,567,890'
Чтобы округлить до некоторого числа десятичных знаков, а также сгруппировать по тысячам, поместите ,
перед .
в вашей спецификации форматирования:
>>>
>>> п = 1234,56
>>> f "Значение n равно {n:,. 2f}"
"Значение n равно 1234,56".
Спецификатор , .2f
полезен для отображения значений валюты:
>>>
>>> баланс = 2000,0
>>> потрачено = 256,35
>>> остаток = баланс - потрачено
>>> f "Потратив $ {потрачено: .2f}, у меня осталось $ {осталось:,. 2f}"
«Потратив 256 долларов.35 лет, у меня осталось 1743,65 доллара ''
Еще одна полезная опция - %
, которая используется для отображения процентов. Параметр %
умножает число на 100
и отображает его в формате с фиксированной точкой, за которым следует знак процента.
Параметр %
всегда должен стоять в конце спецификации форматирования, и его нельзя смешивать с параметром f
. Например, .1%
отображает число в процентах с точностью до одного десятичного знака:
>>>
>>> ratio = 0.9
>>> f "Более {ratio: .1%} питонистов говорят:" Настоящий питон - скала! ""
«Более 90,0% питонистов говорят:« Настоящий питон - это круто! »»
>>> # Отображение процента с двумя десятичными знаками
>>> f "Более {ratio: .2%} питонистов говорят:« Настоящий питон - скала! »»
«Более 90,00% питонистов говорят:« Настоящий питон крут! »»
Мини-язык форматирования является мощным и обширным. Вы видели здесь только основы. Для получения дополнительной информации ознакомьтесь с официальной документацией.
Проверьте свое понимание
Разверните блок ниже, чтобы проверить свое понимание:
Выведите число 150000
в виде валюты с тысячами, сгруппированными через запятую.Валюта должна отображаться с двумя десятичными знаками и начинаться с символа доллара США.
Вы можете развернуть блок ниже, чтобы увидеть решение:
Давайте постепенно наращиваем нашу фа-струну.
Во-первых, f-строка, которая отображает значение 150000
без какого-либо форматирования, выглядит так:
>>>
>>> f "{150000}"
150000
Это может показаться странным, но заставляет вас добавлять спецификаторы форматирования.
Чтобы значение отображалось как число с плавающей запятой, поставьте двоеточие (:
) после числа 150000
, а затем букву f
:
>>>
>>> f "{150000: f}"
"150000.000000"
По умолчанию Python отображает число с шестью десятичными знаками точности. Валюта должна иметь только два десятичных знака точности, поэтому вы можете добавить ,2
между :
и f
:
.
>>>
>>> f "{150000 :.2f} "
"150000.00"
Для отображения числа с цифрами, сгруппированными запятыми, вставьте запятую (,
) между двоеточием (:
) и точкой (.
):
>>>
>>> f "{150000:,. 2f}"
"150,000.00"
Наконец, добавьте знак доллара ( $
) в начале строки, чтобы указать, что значение указано в долларах США:
>>>
>>> f "$ {150000:,. 2f}"
"150 000 долларов США"
F-строки - это всего лишь один из способов форматирования чисел для отображения.Ознакомьтесь с руководством по новым методам форматирования строк в Python, чтобы узнать о других способах форматирования чисел и другого текста в Python.
Когда будете готовы, можете переходить к следующему разделу.
Комплексные числа
Python - один из немногих языков программирования, который обеспечивает встроенную поддержку комплексных чисел. Хотя комплексные числа не часто встречаются за пределами областей научных вычислений и компьютерной графики, их поддержка Python является одной из его сильных сторон.
Если вы когда-либо посещали уроки предварительного вычисления или алгебры более высокого уровня, то, возможно, помните, что комплексное число - это число с двумя отдельными компонентами: действительной частью и мнимой частью части .
Чтобы создать комплексное число в Python, вы просто пишете действительную часть, затем знак плюс, затем мнимую часть с буквой j в конце:
Когда вы проверите значение n
, вы заметите, что Python заключает число в круглые скобки:
Это соглашение помогает устранить любую путаницу, связанную с тем, что отображаемый результат может представлять собой строку или математическое выражение.
Мнимые числа имеют два свойства: .real
и .imag
, которые возвращают действительную и мнимую составляющие числа соответственно:
>>>
>>> п.реально
1.0
>>> n.imag
2.0
Обратите внимание, что Python возвращает и действительные, и мнимые компоненты как числа с плавающей запятой, даже если они были указаны как целые числа.
Комплексные числа также имеют метод .conjugate ()
, который возвращает комплексное сопряжение числа:
>>>
>>> п.сопрягать ()
(1-2j)
Для любого комплексного числа его сопряженное число является комплексным числом с одинаковой действительной частью и мнимой частью, которая одинакова по модулю, но с противоположным знаком. Таким образом, в этом случае комплексное сопряжение 1 + 2j
равно 1 - 2j
.
Свойства .real
и .imag
не нуждаются в скобках после них, как .conjugate ()
.
Метод .conjugate ()
- это функция, которая выполняет действие над комплексным числом, тогда как .real
и .imag
не выполняют никаких действий - они просто возвращают некоторую информацию о номере.
Различие между методами и свойствами - важный аспект объектно-ориентированного программирования.
За исключением оператора деления пола ( //
), все арифметические операторы, работающие с числами с плавающей запятой и целыми числами, также будут работать с комплексными числами. Поскольку это не углубленный курс математики, мы не будем обсуждать механику сложной арифметики.Вместо этого вот несколько примеров использования комплексных чисел с арифметическими операторами:
>>>
>>> а = 1 + 2j
>>> b = 3 - 4j
>>> а + б
(4-2j)
>>> а - б
(-2 + 6j)
>>> а * б
(11 + 2j)
>>> а ** б
(932.13432212 + 95.9465336603415j)
>>> а / б
(-0,2 + 0,4j)
>>> а // б
Отслеживание (последний вызов последний):
Файл "", строка 1, в
TypeError: невозможно принять комплексное число.
Интересно, хотя и не удивительно с математической точки зрения, объекты int
и float
также имеют .real
и .imag
, а также метод .conjugate ()
:
>>>
>>> х = 42
>>> x.real
42
>>> x.imag
0
>>> x.conjugate ()
42
>>> у = 3,14
>>> y.real
3,14
>>> y.imag
0,0
>>> y.conjugate ()
3,14
Для чисел с плавающей запятой и целых чисел .real
и .conjugate ()
всегда возвращают само число, а .imag
всегда возвращает 0
.Однако следует отметить, что n.real
и n.imag
возвращают целое число, если n
- целое число, и число с плавающей запятой, если n
- число с плавающей запятой.
Теперь, когда вы познакомились с основами комплексных чисел, вы можете задаться вопросом, когда вам когда-нибудь понадобится их использовать. Если вы изучаете Python для веб-разработки, анализа данных или программирования общего назначения, правда в том, что вам никогда не понадобится использовать комплексные числа.
С другой стороны, комплексные числа важны в таких областях, как научные вычисления и компьютерная графика.Если вы когда-либо работали в этих областях, вам может пригодиться встроенная в Python поддержка комплексных чисел.
Заключение: числа в Python
В этом руководстве вы узнали все о работе с числами в Python. Вы видели, что существует два основных типа чисел - целые числа и числа с плавающей запятой, и что Python также имеет встроенную поддержку комплексных чисел.
Из этого урока вы узнали:
- Как выполнять простую арифметику с числами с помощью арифметических операторов Python
- Как написать арифметических выражений с использованием передового опыта PEP 8
- Что такое чисел с плавающей запятой и почему они не всегда могут быть точными на 100 процентов
- Как округлить чисел с округлением
()
- Что такое комплексных чисел и как они поддерживаются в Python
Независимо от вашего уровня комфорта с числами и математикой, теперь вы готовы выполнять все виды вычислений в своем коде Python.Вы можете использовать эти знания для решения широкого круга проблем, с которыми вы столкнетесь в своей карьере программиста.
Дополнительная литература
Дополнительную информацию о числах и математике в Python можно найти на следующих ресурсах:
Python-номеров
Python-числа
В Python есть три числовых типа:
Переменные числовых типов создаются при присвоении им значения:
Пример
х = 1
# int
y = 2.8 # float
z = 1j # сложный
Чтобы проверить тип любого объекта в Python, используйте функцию type ()
:
Внутр.
Int или целое число - это целое число,
положительное или отрицательное, без десятичных знаков, неограниченной длины.
Пример
Целые числа:
х = 1
у = 35656222554887711
г =
-3255522
печать (тип (x))
печать (тип (y))
печать (тип (z))
Попробуй сам "
Поплавок
Число с плавающей запятой или «число с плавающей запятой» - это положительное или отрицательное число, содержащее один или несколько десятичных знаков.
Пример
Поплавки:
x = 1,10
y = 1,0
z = -35,59
print (type (x))
print (type (y))
print (type (z))
Попробуй сам "
Float также может быть научным числом с буквой «e» для обозначения степени 10.
Пример
Поплавки:
x = 35e3
y = 12E4
z = -87.7e100
print (type (x))
print (type (y))
print (введите (z))
Попробуй сам "
Комплекс
Комплексные числа записываются с буквой j в качестве мнимой части:
Пример
Комплекс:
x = 3 + 5j
y = 5j
z = -5j
print (type (x))
print (type (y))
print (введите (z))
Попробуй сам "
Преобразование типа
Вы можете преобразовать один тип в другой с помощью int ()
,
float ()
и complex ()
методов:
Пример
Преобразование из одного типа в другой:
х = 1 # целое
у = 2.8 # float
z = 1j # complex
# преобразовать int в float:
a = float (x)
# преобразовать из float в int:
b = int (y)
# преобразовать из int в сложный:
c = complex (x)
print (a)
print (b)
print (c)
print (тип (a))
print (тип (b))
print (тип (c))
Попробуй сам "
Примечание: Комплексные числа нельзя преобразовать в числа другого типа.
Случайное число
Python не имеет функции random ()
для
сделать случайное число, но в Python есть встроенный модуль, называемый
случайных
, которые можно использовать для получения случайных чисел:
Пример
Импортировать случайный модуль и отображать случайное число от 1 до 9:
импортировать случайный отпечаток
(random.randrange (1, 10))
Попробуй сам "
В нашем справочнике по произвольному модулю вы узнаете больше о модуле «Случайный выбор».
Числа Python, преобразование типов и математика
Числовой тип данных в Python
Python поддерживает целые числа, числа с плавающей запятой и комплексные числа. В Python они определены как классы int
, float
и сложные классы
.
Целые числа и числа с плавающей запятой разделяются наличием или отсутствием десятичной запятой.Например, 5 - целое число, а 5.0 - число с плавающей запятой.
Комплексные числа записываются в виде x + yj
, где x - действительная часть, а y - мнимая часть.
Мы можем использовать функцию type ()
, чтобы узнать, к какому классу принадлежит переменная или значение, и функцию isinstance ()
, чтобы проверить, принадлежит ли она определенному классу.
Давайте посмотрим на пример:
а = 5
печать (тип (а))
print (введите (5.0))
с = 5 + 3j
печать (c + 3)
print (isinstance (c, комплекс))
Когда мы запускаем вышеуказанную программу, мы получаем следующий результат:
<класс 'int'> <класс 'float'> (8 + 3j) Правда
Хотя целые числа могут иметь любую длину, число с плавающей запятой является точным только до 15 десятичных знаков (16-е место неточно).
Числа, с которыми мы имеем дело каждый день, имеют десятичную (основание 10) систему счисления. Но компьютерные программисты (обычно встроенные программисты) должны работать с двоичной (основание 2), шестнадцатеричной (основание 16) и восьмеричной (основание 8) системами счисления.
В Python мы можем представить эти числа, поместив соответствующий префикс перед этим числом. В следующей таблице перечислены эти префиксы.
Система счисления | Префикс |
---|---|
двоичный | '0b' или '0B' |
восьмеричное | '0o' или '0O' |
Шестнадцатеричный | '0x' или '0X' |
Вот несколько примеров
# Вывод: 107
печать (0b1101011)
# Вывод: 253 (251 + 2)
печать (0xFB + 0b10)
# Вывод: 13
печать (0o15)
Когда вы запустите программу, на выходе будет:
107 253 13
Преобразование типа
Мы можем преобразовать один тип чисел в другой.Это также известно как принуждение.
Такие операции, как сложение и вычитание, неявно (автоматически) заставляют целое число плавать, если один из операндов является плавающим.
>>> 1 + 2,0
3,0
Выше мы видим, что 1 (целое число) приводится к 1.0 (с плавающей запятой) для сложения, и результат также является числом с плавающей запятой.
Мы также можем использовать встроенные функции, такие как int ()
, float ()
и complex ()
для явного преобразования между типами.Эти функции могут даже преобразовывать из строк.
>>> число (2.3)
2
>>> int (-2,8)
-2
>>> поплавок (5)
5.0
>>> комплекс ('3 + 5j')
(3 + 5j)
При преобразовании из числа с плавающей точкой в целое число обрезается (десятичные части удаляются).
Десятичный Python
Встроенный в Python класс float выполняет некоторые вычисления, которые могут нас удивить. Все мы знаем, что сумма 1,1 и 2,2 составляет 3,3, но Python, похоже, с этим не согласен.
>>> (1,1 + 2,2) == 3,3
Ложь
Что происходит?
Оказывается, числа с плавающей запятой реализованы в компьютерном оборудовании как двоичные дроби, поскольку компьютер понимает только двоичные (0 и 1). По этой причине большинство известных нам десятичных дробей не могут быть точно сохранены на нашем компьютере.
Возьмем пример. Мы не можем представить дробь 1/3 в виде десятичного числа. Это даст 0,33333333 ... что бесконечно долго, и мы можем только приблизить его.
Оказывается, десятичная дробь 0,1 приведет к бесконечно длинной двоичной дроби 0,000110011001100110011 ... и наш компьютер хранит только ее конечное число.
Это будет приблизительно 0,1, но никогда не будет равным. Следовательно, это ограничение нашего компьютерного оборудования, а не ошибка Python.
>>> 1,1 + 2,2
3,3000000000000003
Чтобы решить эту проблему, мы можем использовать десятичный модуль, который поставляется с Python.В то время как числа с плавающей запятой имеют точность до 15 знаков после запятой, десятичный модуль имеет точность, устанавливаемую пользователем.
Посмотрим разницу:
импорт десятичный
печать (0,1)
печать (десятичное. десятичное (0,1))
Выход
0,1 0,1000000000000000055511151231257827021181583404541015625
Этот модуль используется, когда мы хотим выполнять десятичные вычисления, как мы учились в школе.
Это также сохраняет значение.Мы знаем, что 25,50 кг более точное значение, чем 25,5 кг, поскольку в нем два значащих десятичных знака по сравнению с одним.
из десятичного импортировать десятичный как D
print (D ('1.1') + D ('2.2'))
print (D ('1,2') * D ('2,50'))
Выход
3,3 3.000
Обратите внимание на нули в конце в приведенном выше примере.
Мы можем спросить, почему бы каждый раз не реализовывать Decimal
вместо float? Основная причина - оперативность. Операции с плавающей запятой должны выполняться быстрее, чем десятичных
операций.
Когда использовать десятичное число вместо числа с плавающей запятой?
Обычно мы используем Decimal в следующих случаях.
- Когда мы создаем финансовые приложения, требующие точного десятичного представления.
- Когда мы хотим контролировать требуемый уровень точности.
- Когда мы хотим реализовать понятие значащих десятичных знаков.
Фракции Python
Python обеспечивает операции с дробными числами через модуль fractions
.
У дроби есть числитель и знаменатель, оба из которых являются целыми числами. Этот модуль поддерживает арифметику рациональных чисел.
Мы можем создавать объекты Fraction различными способами. Давайте посмотрим на них.
импортных фракций
печать (дроби. дробь (1.5))
печать (дроби. дробь (5))
печать (дроби. дробь (1,3))
Выход
3/2 5 1/3
Создавая Fraction
из float
, мы можем получить необычные результаты.Это происходит из-за несовершенного представления двоичного числа с плавающей запятой, как обсуждалось в предыдущем разделе.
К счастью, Fraction
также позволяет нам создавать экземпляры со строкой. Это предпочтительный вариант при использовании десятичных чисел.
импортных фракций
# Как float
# Выход: 2476979795053773/2251799813685248
печать (дроби. дробь (1.1))
# Как строка
# Вывод: 11/10
печать (дроби. дробь ('1,1'))
Выход
2476979795053773/2251799813685248 11/10
Этот тип данных поддерживает все основные операции.Вот несколько примеров.
из фракций импортных фракций как F
печать (F (1, 3) + F (1, 3))
печать (1 / F (5, 6))
печать (F (-3, 10)> 0)
печать (F (-3, 10) <0)
Выход
2/3 6/5 Ложь Правда
Python Математика
Python предлагает такие модули, как math
и random
, для выполнения различных математических задач, таких как тригонометрия, логарифмы, вероятность и статистика и т. Д.
импорт математики
печать (математ.Пи)
печать (math.cos (math.pi))
печать (math.exp (10))
печать (math.log10 (1000))
печать (math.sinh (1))
печать (math.factorial (6))
Выход
3,1415589793 -1,0 22026.465794806718 3.0 1,1752011
8014
720
Вот полный список функций и атрибутов, доступных в математическом модуле Python.
случайный импорт
печать (random.randrange (10, 20))
x = ['a', 'b', 'c', 'd', 'e']
# Получить случайный выбор
печать (случайный.выбор (х))
# Перемешать x
random.shuffle (х)
# Вывести перетасованный x
печать (х)
# Печатать случайный элемент
печать (random.random ())
Когда мы запускаем указанную выше программу, мы получаем следующий результат (значения могут отличаться из-за случайного поведения).
18 е ['c', 'e', 'd', 'b', 'a'] 0,5682821194654443
Вот полный список функций и атрибутов, доступных в модуле Python random.
Математический модуль Python
Некоторые из самых популярных математических функций определены в математическом модуле.К ним относятся тригонометрические функции, функции представления, логарифмические функции, функции преобразования углов и т. Д. Кроме того, в этом модуле определены две математические константы.
Пи - хорошо известная математическая константа, которая определяется как отношение длины окружности к диаметру окружности, и ее значение составляет 3,1415589793.
>>> импорт математики
>>> math.pi
3.1415
589793
Еще одна известная математическая константа, определенная в математическом модуле, - e . Оно называется числом Эйлера и является основанием натурального логарифма. Его значение - 2,718281828459045.
>>> импорт математики
>>> math.e
2,718281828459045
Математический модуль содержит функции для вычисления различных тригонометрических соотношений для заданного угла.Для функций (sin, cos, tan и т. Д.) В качестве аргумента требуется угол в радианах.
Мы же, с другой стороны, привыкли выражать угол в градусах. В математическом модуле представлены две функции преобразования углов: градусов ()
и радиан ()
для преобразования угла из градусов в радианы и наоборот.
Например, следующие инструкции преобразуют угол 30 градусов в радианы и обратно (Примечание: π радиан эквивалентно 180 градусам).
>>> импорт математики
>>> математика.радианы (30)
0,5235987755982988
>>> math.degrees (math.pi / 6)
29.999999999999996
Следующие утверждения показывают отношения sin, cos и tan
для угла 30 градусов (0,5235987755982988 радиан):
>>> импорт математики
>>> math.sin (0.5235987755982988)
0,49999999999999994
>>> math.cos (0.5235987755982988)
0.8660254037844387
>>> math.tan (0,5235987755982988)
0,57735026257
Вы можете вспомнить, что sin (30) = 0,5
,
cos (30) = 32
(что составляет 0,8660254037844387
) и tan (30) = 13
(что составляет 0, 57735026
257
).
math.log ()
Метод math.log ()
возвращает натуральный логарифм заданного числа.Натуральный логарифм вычисляется по основанию e
.
>>> импорт математики
>>> math.log (10)
2,3025850046
math.log10 ()
Метод math.log10 ()
возвращает десятичный логарифм заданного числа. Он называется стандартным логарифмом.
>>> импорт математики
>>> математика.log10 (10)
1.0
math.exp ()
Метод math.exp ()
возвращает число с плавающей запятой после возведения e в степень данного числа.
Другими словами, exp (x)
дает e ** x
.
>>> импорт математики
>>> math.exp (10)
22026.465794806718
Это можно проверить с помощью оператора экспоненты.
>>> импорт математики
>>> math.e ** 10
22026.465794806703
math.pow ()
Метод math.pow ()
получает два аргумента с плавающей запятой, повышает значение первого до второго и возвращает результат. Другими словами, pow (4,4) эквивалентно 4 ** 4.
>>> импорт математики
>>> математика.пау (2,4)
16.0
>>> 2 ** 4
16
math.sqrt ()
Метод math.sqrt ()
возвращает квадратный корень из заданного числа.
>>> импорт математики
>>> math.sqrt (100)
10.0
>>> math.sqrt (3)
1.7320508075688772
Следующие две функции называются функциями представления.Функция ceil () приближает заданное число к наименьшему целому числу, которое больше или равно заданному числу с плавающей запятой.
Функция floor ()
возвращает наибольшее целое число, меньшее или равное заданному числу.
>>> импорт математики
>>> math.ceil (4.5867)
5
>>> math.floor (4.5687)
4
Узнайте больше о математическом модуле в документации Python.
3. Почти все о числах - Python Notes (0.14.0)
3.1. Числовые типы
Есть 4 числовых типа:
- простые целые числа
- длинных целых
- числа с плавающей запятой
- комплексные числа
Длинные целые числа - это код с буквой L:
>>> 2 ** 62 4611686018427387904 >>> 2 ** 63 223372036854775808L
Чтобы определить максимально возможное целое число в вашей системе, используйте:
>>> import sys >>> sys.Максинта
Комплексные числа кодируются с использованием буквы j для мнимой части:
>>> а = 1 + 2j >>> а.реально 1.0 >>> a.imag 2.0 >>> a.conjugate () (1-2 * j)
Обратите внимание, что тип действительной и мнимой частей - числа с плавающей запятой, поскольку комплексные числа используют числа с плавающей запятой.
Примечание
Модуль
cmath обеспечивает сложные функции, найденные в модуле
математики.
Вы также можете использовать восьмеричные числа и шестнадцатеричные числа .Восьмеричное начинается с нуля, а шестнадцатеричное - с нуля и x:
Вы можете использовать hex () и oct () для преобразования целого числа в шестнадцатеричную или восьмеричную строку:
3.3. Преобразование
Хотя Python выполняет внутреннее преобразование, вы можете выполнить преобразование явно. Это можно сделать с помощью int (), float (), complex (), long (), но также с помощью oct () и hex ().
3.4. Остаток и частное от деления
Знаки% (по модулю) и / возвращают остаток и частное от деления:
В качестве альтернативы вы можете использовать функцию divmod ():
Вы можете использовать знак% целого числа, но также числа с плавающей запятой:
3.1
0
3,6. Возведение числа в степень
Просто используйте символ **:
, вы также можете использовать функцию pow () для увеличения мощности.
Вы можете указать третий аргумент (мод), чтобы ответом был остаток от повторного использования, разделенный на необязательный аргумент:
3,7. Операторы расширенного присваивания
Оператор расширенного присваивания доступен для следующего оператора: +, -, * , /, ** ,%.
>>> х = 1 >>> х + = 1 >>> х 2
3.8. Больше математики
До сих пор мы видели математические операторы, но не функции. Python предоставляет несколько встроенных функций для выполнения большего количества математических вычислений. Примеры:
Давайте быстро представим функцию округления, которая принимает аргумент, чтобы указать, какую цифру округлять:
>>> круглый (33.49,1) 33,5 >>> круглый (33,49, -1) 30,0
Кроме того, вы можете использовать модули math и cmath (cmath - это сложная версия математики).Наконец, есть еще и случайный модуль. См. Импорт модулей для более подробной информации.
3.9. NaN и Inf
>>> float ('Inf') инф >>> float ('Inf') + 1 инф >>> float ('NaN') нан >>> float ('NaN') + 1 нан
Математическая библиотека Python
Введение
Математическая библиотека Python предоставляет нам доступ к некоторым общим математическим функциям и константам в Python, которые мы можем использовать в нашем коде для более сложных математических вычислений.Библиотека является встроенным модулем Python, поэтому вам не нужно выполнять установку, чтобы использовать ее. В этой статье мы покажем пример использования наиболее часто используемых функций и констант математической библиотеки Python.
Специальные константы
Математическая библиотека Python содержит две важные константы.
Пирог
Первая - это Pie (π), очень популярная математическая константа. Он обозначает отношение длины окружности к диаметру круга и имеет значение 3.1415589793. Чтобы получить к ней доступ, мы сначала импортируем математическую библиотеку следующим образом:
импорт математики
Затем мы можем получить доступ к этой константе, используя pi
:
math.pi
Выход
3,1415
589793
Эту константу можно использовать для вычисления площади или длины окружности. Следующий пример демонстрирует это:
импорт математики
радиус = 2
print ('Площадь круга радиусом 2 равна:', math.пи * (радиус ** 2))
Выход
Площадь круга радиусом 2 составляет: 12,566370614359172
Мы увеличили значение радиуса до степени 2, а затем умножили его на круговую диаграмму в соответствии с формулой площади πr 2 .
Число Эйлера
Число Эйлера (e), являющееся основанием натурального логарифма, также определено в библиотеке Math. Мы можем получить к нему доступ следующим образом:
math.e
Выход
2.718281828459045
В следующем примере показано, как использовать указанную выше константу:
импорт математики
печать ((math.e + 6/2) * 4.32)
Выход
24.702977498943074
Показатели и логарифмы
В этом разделе мы исследуем функции библиотеки Math, используемые для поиска различных типов показателей и логарифмов.
Функция exp ()
Математическая библиотека Python поставляется с функцией exp ()
, которую мы можем использовать для вычисления степени e
.Например, e x , что означает экспоненту x. Значение e
равно 2,718281828459045.
Метод может использоваться со следующим синтаксисом:
math.exp (x)
Параметр x
может быть положительным или отрицательным числом. Если x
не является числом, метод вернет ошибку. Продемонстрируем использование этого метода на примере:
импорт математики
# Инициализация значений
an_int = 6
a_neg_int = -8
a_float = 2.00
# Передаем значения методу exp () и распечатаем
печать (math.exp (an_int))
печать (math.exp (a_neg_int))
печать (math.exp (a_float))
Выход
403.42879341
0,000335462627185
7,38
98
Мы объявили три переменные и присвоили им значения с разными типами числовых данных. Затем мы передали их методу exp ()
для вычисления их показателей.
Мы также можем применить этот метод к встроенным константам, как показано ниже:
импорт математики
печать (математ.ехр (math.e))
печать (math.exp (math.pi))
Выход
15.154262241479262
23.1406779267
Если вы передадите методу нечисловое значение, он выдаст ошибку, как показано здесь:
импорт математики
печать (math.exp ("20"))
Выход
Traceback (последний звонок последний):
Файл "C: /Users/admin/mathe.py", строка 3, в
печать (math.exp ("20"))
TypeError: требуется float
Возникла ошибка TypeError, как показано в выходных данных выше.
Функция log ()
Эта функция возвращает логарифм указанного числа. Натуральный логарифм вычисляется по основанию e
. Следующий пример демонстрирует использование этой функции:
импорт математики
print ("math.log (10.43):", math.log (10.43))
print ("math.log (20):", math.log (20))
print ("math.log (math.pi):", math.log (math.pi))
В приведенном выше сценарии мы передали методу числовые значения с разными типами данных.Мы также вычислили натуральный логарифм постоянной пи
. Результат выглядит так:
Выход
math.log (10.43): 2.3446862681
math.log (20): 2.995732273553991
math.log (math.pi): 1.14472988584
Функция log10 ()
Этот метод возвращает десятичный логарифм указанного числа. Например:
импорт математики
# Возвращает log10 из 50
print ("Лог 10 из 50:", math.log10 (50))
Выход
Лог 10 из 50: 1.6989700043360187
Функция log2 ()
Эта функция вычисляет логарифм числа по основанию 2. Например:
импорт математики
# Возвращает log2 из 16
print ("Журнал2 из 16 равен:", math.log2 (16))
Выход
Лог2 из 16: 4,0
Функция log (x, y)
Эта функция возвращает логарифм x, где y является основанием.Например:
импорт математики
# Возвращает лог 3,4
print ("Журнал 3 с основанием 4:", math.log (3, 4))
Выход
Бревно 3 с основанием 4: 0,630
35714574
Функция log1p (x)
Эта функция вычисляет логарифм (1 + x), как показано здесь:
импорт математики
print ("Значение 10 логарифма (1 + x):", math.log1p (10))
Выход
Значение логарифма (1 + x) 10: 2.3978952727983707
Арифметические функции
Арифметические функции используются для представления чисел в различных формах и выполнения над ними математических операций. Некоторые из наиболее распространенных арифметических функций описаны ниже:
-
ceil ()
: возвращает максимальное значение указанного числа. -
fabs ()
: возвращает абсолютное значение указанного числа. -
floor ()
: возвращает минимальное значение указанного числа.х) -1. -
exp (x) -1
: когда значение x мало, вычислениеexp (x) -1
может привести к значительной потере точности.expm1 (x)
может возвращать выходные данные с полной точностью.
В следующем примере демонстрируется использование вышеуказанных функций:
импорт математики
число = -4,28
а = 14
б = 8
num_list = [10, 8.25, 75, 7.04, -86.23, -6.43, 8.4]
x = 1e-4 # Маленькое значение x
print ('Число:', число)
print ('Минимальное значение:', math.x (с использованием функции expml ()): 0,00010000500016667084
К другим математическим функциям относятся следующие:
-
pow ()
: принимает два аргумента с плавающей запятой, переводит первый аргумент во второй и возвращает результат. Например,pow (2,2)
эквивалентно2 ** 2
. -
sqrt ()
: возвращает квадратный корень указанного числа.
Эти методы можно использовать, как показано ниже:
Мощность:
математ.pow (3, 4)
Выход
81,0
Квадратный корень:
math.sqrt (81)
Выход
9,0
Тригонометрические функции
Модуль Python Math поддерживает все тригонометрические функции. Некоторые из них занесены в список ниже:
-
sin (a)
: возвращает синус "a" в радианах -
cos (a)
: возвращает косинус "a" в радианах -
tan (a)
: возвращает тангенс «a» в радианах. -
asin (a)
: возвращает значение, обратное синусу.Также есть «атан» и «акос». -
градусов (a)
: Преобразует угол «a» из радиана в градусы. -
радиан (a)
: преобразует угол «a» из градусов в радианы.
.
.
.
Рассмотрим следующий пример:
импорт математики
angle_In_Degrees = 62
angle_In_Radians = математические радианы (angle_In_Degrees)
print ('Значение угла:', angle_In_Radians)
print ('sin (x) is:', math.sin (angle_In_Radians))
print ('tan (x) is:', math.tan (angle_In_Radians))
print ('cos (x) is:', math.cos (угол_In_Radians))
Выход
Значение угла: 1.0821041362364843
sin (x) равен: 0.88294759269
tan (x) равен: 1.8807264653463318
cos (x) равен: 0.46947156278589086
Обратите внимание, что мы сначала преобразовали значение угла из градусов в радианы перед выполнением других операций.
Преобразование типа
Вы можете преобразовать число из одного типа в другой. Этот процесс известен как «принуждение». Python может внутренне преобразовывать число из одного типа в другой, если выражение имеет значения смешанных типов.Следующий пример демонстрирует это:
3 + 5.1
Выход
8,1
В приведенном выше примере целое число 3 было приведено к значению 3,0 (число с плавающей запятой) для операции сложения, и результатом также является число с плавающей запятой.
Однако иногда необходимо явно привести число от одного типа к другому, чтобы удовлетворить требованиям параметра функции или оператора. Это можно сделать с помощью различных встроенных функций Python.Например, чтобы преобразовать целое число в число с плавающей запятой, мы должны вызвать функцию float ()
, как показано ниже:
а = 12
b = с плавающей точкой (a)
печать (б)
Выход
12,0
Целое число преобразовано в число с плавающей запятой. Число с плавающей запятой можно преобразовать в целое число следующим образом:
а = 12,65
б = int (а)
печать (б)
Выход
12
Число с плавающей запятой было преобразовано в целое путем удаления дробной части и сохранения основного числа.Обратите внимание, что при преобразовании значения в int таким образом оно будет усечено, а не округлено.
Заключение
Математическая библиотека Python предоставляет нам функции и константы, которые мы можем использовать для выполнения арифметических и тригонометрических операций в Python.