Эквивалентно: (1 < x) and (x < 5)
Числа в Python: системы счисления, операции, сравнения и деление
Python предоставляет богатый набор возможностей для работы с числами. В этой статье разберем синтаксис чисел в разных системах счисления, операции с разными типами, сравнения и особенности деления. Системы счисления: синтаксис чисел
- Десятичные (Decimal) Стандартный формат для целых и вещественных чисел: a = 42 # int b = 3.14 # float c = 1_000_000 # int с разделителем для удобства (Python 3.6+)
- Шестнадцатеричные (Hexadecimal) Используют префикс 0x: hex_num = 0x1A # 26 в десятичной системе print(hex_num) # 26
- Восьмеричные (Octal) Префикс 0o (Python 3+): oct_num = 0o12 # 10 в десятичной системе print(oct_num) # 10
- Двоичные (Binary) Префикс 0b: bin_num = 0b110 # 6 в десятичной системе print(bin_num) # 6 Для преобразования чисел в строку в разных системах: print(bin(10)) # ‘0b1010’ print(hex(255)) # ‘0xff’ print(oct(8)) # ‘0o10’
Операции с разными типами Python автоматически преобразует типы при смешанных операциях:
- int + float → float
- int/float + complex → complex Примеры: print(3 + 4.5) # 7.5 (float) print(2 * 3.0) # 6.0 (float) print(5 + 2j) # (5+2j) (complex) Важно: При делении / результат всегда float, даже если числа целые: print(4 / 2) # 2.0 (float) Сравнение чисел
- Обычные сравнения: Используйте операторы ==, !=, <, >, <=, >=: x = 5 print(3 < x <= 10) # True (двойное сравнение) print(x == 5.0) # True (значения равны, типы игнорируются) print(0.1 + 0.2 == 0.3) # False (из-за погрешности float) Совет: Для точных сравнений с плавающей точкой используйте модуль decimal: from decimal import Decimal print(Decimal(‘0.1’) + Decimal(‘0.2’) == Decimal(‘0.3’)) # True
- Цепные сравнения (Chained Comparisons) Python позволяет объединять условия:
Эквивалентно: (1 < x) and (x < 5)
x = 3 print(1 < x < 5) # True Типы деления
- Обычное (True) деление (/) Всегда возвращает float, даже при делении целых чисел: print(5 / 2) # 2.5 print(4 / 2) # 2.0
- Целочисленное (Floor) деление (//) Возвращает целую часть, округляя вниз: print(5 // 2) # 2 (int) print(-5 // 2) # -3 (округляет в меньшую сторону) print(7.8 // 2) # 3.0 (float)
- Деление по модулю (%) Возвращает остаток от деления: print(5 % 2) # 1 print(10 % 3) # 1 print(-5 % 2) # 1 (по формуле: a = b * (a // b) + a % b) Примеры комбинаций: quotient, remainder = divmod(10, 3) print(quotient) # 3 print(remainder) # 1 Особенности чисел в Python
- Большие числа Поддержка чисел произвольной точности: big_num = 2 ** 1000 # 1071508607186267320948… (301 цифра)
- Модуль math Для сложных операций: import math print(math.sqrt(16)) # 4.0 print(math.floor(3.7)) # 3 print(math.ceil(3.2)) # 4
- Точные десятичные дроби Используйте Decimal для финансовых расчетов: from decimal import Decimal print(Decimal(‘0.1’) + Decimal(‘0.2’)) # 0.3 Заключение
- Системы счисления:
- Шестнадцатеричные (0x), восьмеричные (0o), двоичные (0b).
- Используйте bin(), hex(), oct() для преобразований.
- Смешанные операции:
- Python автоматически повышает типы (int → float → complex).
- Деление / всегда возвращает float.
- Сравнения:
- Цепные сравнения (1 < x < 5) упрощают код.
- Для точных расчетов с плавающей точкой используйте Decimal.
- Деление:
- / — истинное деление.
- // — целочисленное (с округлением вниз).
- % — остаток от деления. Советы:
- Для проверки типа числа используйте isinstance(x, int).
- Избегайте сравнения float на равенство из-за погрешностей.
- Используйте _ в больших числах для удобства чтения (например, 1_000_000). ?