Числа

Числа

FTS

Числа: целые, вещественные, комплексные

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

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

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

255 + 34
5 * 2
20 / 3
20 // 3
20 % 3
3 ** 4
pow(3, 4)
pow(3, 4, 27)
3 ** 150

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

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

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

int.bit_length() - количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.

n = -37
bin(n)
n.bit_length()

int.to_bytes(length, byteorder, *, signed=False) - возвращает строку байтов, представляющих это число.

1024).to_bytes(2, byteorder='big')
(1024).to_bytes(10, byteorder='big')
(-1024).to_bytes(10, byteorder='big', signed=True)
x = 1000
x.to_bytes((x.bit_length() // 8) + 1, byteorder='little')

classmethod int.from_bytes(bytes, byteorder, *, signed=False) - возвращает число из данной строки байтов.

int.from_bytes(b'\x00\x10', byteorder='big')
int.from_bytes(b'\x00\x10', byteorder='little')
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
int.from_bytes([255, 0, 0], byteorder='big')

Системы счисления

Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011. Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

  • int([object], [основание системы счисления]) - преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно.
  • bin(x) - преобразование целого числа в двоичную строку.
  • hex(х) - преобразование целого числа в шестнадцатеричную строку.
  • oct(х) - преобразование целого числа в восьмеричную строку.

Примеры:

a = int('19') # Переводим строку в число
b = int('19.5') # Строка не является целым числом

c = int(19.5) # Применённая к числу с плавающей точкой, отсекает дробную часть
print(a, c)
bin(19)
oct(19)
hex(19)
0b10011 # Так тоже можно записывать числовые константы
int('10011', 2)
int('0b10011', 2)

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

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1

Для высокой точности используют другие объекты (например Decimal и Fraction)).

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

a = 3 ** 1000
a + 0.1

Простенькие примеры работы с числами:

c = 150
d = 12.9
c + d
p = abs(d - c) # Модуль числа
print(p)
round(p) # Округление

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

float.as_integer_ratio() - пара целых чисел, чьё отношение равно этому числу.

float.is_integer() - является ли значение целым числом.

float.hex() - переводит float в hex (шестнадцатеричную систему счисления).

classmethod float.fromhex(s) - float из шестнадцатеричной строки.

(10.5).hex()
float.fromhex('0x1.5000000000000p+3')

Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.

Модуль math предоставляет более сложные математические функции

import math
math.pi
math.sqrt(85)

Модуль random реализует генератор случайных чисел и функции случайного выбора.

import random
random.random()

Комплексные числа (complex)

x = complex(1, 2)
print(x)
y = complex(3, 4)
print(y)
z = x + y
print(x)
print(z)
z = x * y
print(z)
z = x / y
print(z)
print(x.conjugate()) # Сопряжённое число
print(x.imag) # Мнимая часть
print(x.real) # Действительная часть
print(x > y) # Комплексные числа нельзя сравнить

print(x == y) # Но можно проверить на равенство
abs(3 + 4j) # Модуль комплексного числа
pow(3 + 4j, 2) # Возведение в степень

Report Page