Числа в Python.



Сегодня я расскажу о числах в python, а также о их операциях. В Python существует 3 вида чисел:

  • Целые числа (int)
  • Вещественные числа (float)
  • Комплексные числа (complex)

Целые числа (int)

Целые числа в Python ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

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 по модулю (если модуль задан)


Битовые операции

Над целыми числами также можно производить битовые операции.

x | yПобитовое или
x ^ 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

Вещественные числа (float)

Вещественные числа поддерживают те же операции, что и целые. Но вещественные числа неточны, и это может привести к ошибкам:

>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.9999999999999999

Вещественные числа не поддерживают длинную арифметику:

>>> a = 3 ** 1000
>>> a + 0.1
Traceback (most recent call last):
  File "", line 1, in
OverflowError: int too large to convert to float

Методы
  • float.as_integer_ratio() — пара целых чисел, их отношение равно этому числу.
  • float.is_integer() — является ли значение целым числом.
  • float.hex() — переводит float в hex (шестнадцатеричную систему счисления).
  • classmethod float.fromhex(s) — float из шестнадцатеричной строки.

Также для работы с числами в 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)

Также в Python существует интересный модуль под назанием cmath. Данный модуль предоставляет функции для работы с комплексными числами:

  • cmath.phase(x) — возвращает фазу комплексного числа
  • cmath.polar(x) — преобразование к полярным координатам. Возвращает пару (r, phi).
  • cmath.rect(r, phi) — преобразование из полярных координат.
  • cmath.exp(x) — ex.
  • cmath.log(x[, base]) — логарифм x по основанию base. Если base не указан, возвращается натуральный логарифм.
  • cmath.log10(x) — десятичный логарифм.
  • cmath.sqrt(x) — квадратный корень из x.
  • cmath.acos(x) — арккосинус x.
  • cmath.asin(x) — арксинус x.
  • cmath.atan(x) — арктангенс x.
  • cmath.cos(x) — косинус x.
  • cmath.sin(x) — синус x.
  • cmath.tan(x) — тангенс x.
  • cmath.acosh(x) — гиперболический арккосинус x.
  • cmath.asinh(x) — гиперболический арксинус x.
  • cmath.atanh(x) — гиперболический арктангенс x.
  • cmath.cosh(x) — гиперболический косинус x.
  • cmath.sinh(x) — гиперболический синус x.
  • cmath.tanh(x) — гиперболический тангенс x.
  • cmath.isfinite(x) — True, если действительная и мнимая части конечны.
  • cmath.isinf(x) — True, если либо действительная, либо мнимая часть бесконечна.
  • cmath.isnan(x) — True, если либо действительная, либо мнимая часть NaN.
  • cmath.pi — π.
  • cmath.e — e.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

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

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