Модуль числа питон: Модуль числа в 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.44030650891055

abs() 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.0

abs() 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.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 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
    библиотека. Обратите внимание, что выражение Python x % y может не возвращать тот же
    результат. Цель стандарта C состоит в том, чтобы fmod(x, y) был точно
    (математически; с бесконечной точностью) равно x - n*y для некоторого
    целого числа n, такого, что результат имеет тот же знак, что и x , и величину
    меньше abs(y) . Python x % y возвращает результат со знаком y
    вместо этого и может быть не совсем вычислимым для Аргументов float. Для
    например, fmod(-1e-100, 1e100) — это -1e-100 , но результат Python
    -1e-100 % 1e100 — это 1e100-1e-100, который не может быть представлен точно как поплавок, и округляется до удивительного 1e100 . По этой причине
    функция fmod() обычно предпочтительна при работе с поплавками, в то время как
    Python’s x % 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Побитовое исключающее илиx & yПобитовое иx << nБитовый сдвиг влевоx >> yБитовый сдвиг вправо~xИнверсия битов

    Дополнительные методы

    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. Обратите внимание, что
    Выражение Python x% y может не возвращать тот же результат. Намерение C
    стандартным является то, что fmod (x, y) должно быть точно (математически; до бесконечности
    точности), равного x - n * y для некоторого целого числа n , так что результат имеет
    тот же знак, что и x , и величина меньше абс (y) .Python x% y
    вместо этого возвращает результат со знаком y и может быть неточно вычислимым
    для аргументов с плавающей запятой. Например, fmod (-1e-100, 1e100) это -1e-100 , но
    результат Python -1e-100% 1e100 будет 1e100-1e-100 , что не может быть
    представлен в точности как поплавок и округляется до удивительного 1e100 . Для
    по этой причине функция fmod () обычно предпочтительнее при работе с
    float, тогда как Python x% 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 /
    y
    .Если x / 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 имеет несколько встроенных функций, которые можно использовать для работы с числами.В этом разделе вы узнаете о трех наиболее распространенных:

    1. round () , для округления чисел до некоторого количества десятичных знаков
    2. abs () , для получения абсолютного значения числа
    3. 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.1415589793
      

    Еще одна известная математическая константа, определенная в математическом модуле, - 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, 57735026257 ).

    math.log ()

    Метод math.log () возвращает натуральный логарифм заданного числа.Натуральный логарифм вычисляется по основанию e .

      >>> импорт математики
    >>> math.log (10)
    2,3025850

    046

    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,1415589793
      

    Эту константу можно использовать для вычисления площади или длины окружности. Следующий пример демонстрирует это:

      импорт математики
    
    радиус = 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.4287934
    1
    0,000335462627

    185 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,63035714574
      
    Функция 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.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *