Числовые типы данных в Python
Python предоставляет различные типы для работы с числами, что делает его мощным инструментом для математических вычислений. В этой статье мы подробно рассмотрим числовые типы данных и операции, которые можно с ними выполнять.
Основные числовые типы
В Python два основных числовых типа:
- Целые числа (int) — числа без дробной части
- Числа с плавающей точкой (float) — числа с дробной частью
Есть ещё complex для мнимых чисел, в обычной разработке практически не встречается.
Целые числа (int)
Целые числа (тип int) представляют числа без дробной части:
Python 3.13# Положительные и отрицательные целые числа positive = 42 negative = -73 zero = 0 big_number = 1234567890123456789012345678901234567890 # Подчёркивание-разделитель для удобства чтения больших чисел million = 1_000_000 # То же самое, что 1000000
В отличие от многих других языков, в Python целые числа имеют неограниченную точность: они могут быть сколь угодно большими, ограничены только доступной памятью.
Числа с плавающей точкой (float)
Числа с плавающей точкой (тип float) представляют действительные числа с дробной частью:
Python 3.13price = 19.99 pi_approx = 3.14159 negative_float = -0.5
Главное, что нужно знать про float: их точность ограничена, и в простых на вид вычислениях вылезают погрешности:
Python 3.13result = 0.1 + 0.2 print(result)0.30000000000000004
Это не баг Python, а особенность хранения дробных чисел в двоичном представлении: некоторые десятичные дроби в нём не представимы точно. Для финансовых вычислений и других задач, где точность критична, используют модуль decimal.
По той же причине не сравнивайте float через == напрямую — две казалось бы равные дроби могут отличаться в последнем знаке:
Python 3.13print(0.1 + 0.2 == 0.3)False
Если нужно сравнение с допуском, используйте math.isclose(a, b):
Python 3.13import math print(math.isclose(0.1 + 0.2, 0.3))True
Арифметические операции
Python поддерживает все стандартные арифметические операции:
Python 3.13a = 10 b = 3 # Сложение, вычитание, умножение a + b # 13 a - b # 7 a * b # 30 # Деление — всегда возвращает float a / b # 3.3333333333333335 # Целочисленное деление — возвращает int (отбрасывает дробь) a // b # 3 # Остаток от деления a % b # 1 # Возведение в степень a ** b # 1000
Смешанные типы
Если в выражении есть и int, и float, результат всегда будет float:
Python 3.135 + 3.14 # 8.14 (float) 10 * 2.0 # 20.0 (float) 4 ** 0.5 # 2.0 (float)
Округление
Python даёт несколько способов округлить число:
Python 3.13# Округление до ближайшего целого round(3.14159) # 3 # Округление до указанного количества знаков после запятой round(3.14159, 2) # 3.14 import math # Округление вниз (к меньшему целому) math.floor(3.99) # 3 # Округление вверх (к большему целому) math.ceil(3.01) # 4 # Отбрасывание дробной части math.trunc(3.99) # 3
Тонкость: round и округление к чётному
При попадании значения ровно посередине (например, 0.5 или 2.5) Python округляет не к большему, а к ближайшему чётному. Это называется банковским округлением (banker's rounding) и сделано для уменьшения статистической ошибки при больших объёмах округлений:
Python 3.13print(round(0.5)) # ожидаем 10print(round(1.5))2print(round(2.5)) # ожидаем 32print(round(3.5))4
Если нужно «школьное» округление (0.5 всегда вверх), пишите свою функцию или используйте decimal с явно заданным режимом.
Математические функции
Модуль math даёт полезные функции — sqrt (квадратный корень), константы pi и e:
Python 3.13import math math.sqrt(16) # 4.0 math.pi # 3.141592653589793 math.e # 2.718281828459045
Там же лежат тригонометрия, логарифмы, факториал и много чего ещё — полный список в документации модуля math.
Встроенные функции для чисел
Часть числовых функций встроена прямо в Python, без import:
Python 3.13# Абсолютное значение abs(-10) # 10 # Максимум и минимум max(1, 5, 3, 9, 2) # 9 min(1, 5, 3, 9, 2) # 1 # Сумма последовательности sum([1, 2, 3, 4, 5]) # 15 # Преобразование других типов в числовые int("42") # 42 float("3.14") # 3.14
Задания для самопроверки
В заданиях этого урока появятся два новых элемента, которые могут запутать. Разберёмся.

Первая строка a, b = map(int, input().split()) — это системная часть, которая читает входные данные из теста. После её выполнения в переменных a и b оказываются два числа, с которыми нужно работать в задаче. В большинстве следующих заданий она будет в начале. Что именно делают map, input и split, разберём позже; пока её можно просто оставить как есть.
Строки с print('...') теперь содержат тексты-плейсхолдеры. Их нужно заменить на реальные выражения: например, print('результат целочисленного деления') превращается в print(a // b).

В результатах теперь видно поле «Входные данные» — там показывают, с каким вводом запускался конкретный тест. Тестов может быть несколько, и все они должны пройти.
