int в Python — встроенный тип для целых чисел: 5, −12, 1_000_000. Создаётся литералом (a = 42) или функцией int(), которая превращает строку или дробное число в целое. Размер числа ограничен только памятью компьютера, переполнения, как в C или Java, здесь нет.
Ниже разберём, как записывать целые числа, что делает int(), чем деление / отличается от //, какие методы есть у int и как решать типовые задачи: чётность, НОД, простые числа. Примеры работают в Python 3.12 и новее. Если вы только начинаете, сначала посмотрите первые простые программы на Python.
Как записать целое число в Python

Целое число пишется цифрами без точки. Тип Python определяет сам, объявлять его не нужно.
a = 42
b = -7
c = 1_000_000
print(type(a), c)
print(0b1010, 0o17, 0xFF)
print(isinstance(True, int), True + True)
<class 'int'> 1000000
10 15 255
True 2
Что здесь происходит:
- подчёркивания внутри числа ничего не значат, они только делят разряды, чтобы миллион читался глазами;
- префиксы
0b,0oи0xзадают двоичную, восьмеричную и шестнадцатеричную запись, но в памяти это тот жеint; TrueиFalseтоже целые числа: в документации Python типboolназван подтипом целых, поэтомуTrue + Trueдаёт 2.
Переводы между системами счисления подробно разобраны в отдельной статье о системах счисления в Python.
Что делает функция int()
int() превращает значение в целое число. Чаще всего её зовут, чтобы получить число из строки, например из того, что пользователь ввёл с клавиатуры.
print(int(" 42 "))
print(int(3.99), int(-3.99))
print(int("ff", 16), int("1010", 2), int("0x1f", 0))
print(int())
try:
int("3.5")
except ValueError as e:
print("ValueError:", e)
42
3 -3
255 10 31
0
ValueError: invalid literal for int() with base 10: '3.5'
Пять правил, которые видно по выводу:
- Пробелы по краям строки
int()отбрасывает сам. - Дробное число не округляется, а усекается к нулю: 3.99 станет 3, а −3.99 станет −3. Так прямо сказано в описании функции int().
- Второй аргумент задаёт основание системы счисления:
int("ff", 16)вернёт 255. - При основании 0 Python сам читает префикс
0x,0oили0bв строке. - Без аргументов
int()возвращает 0.
Строку с точкой вроде «3.5» int() не примет и выбросит ValueError. Чтобы получить целое из такой строки, сначала вызовите float(), потом int(): int(float("3.5")) даст 3. Как безопасно читать число с клавиатуры и проверять ввод, рассказали в статье про int(input()) в Python.
Арифметика с целыми числами
С int работают все обычные операторы. Важно помнить, какой тип получится в ответе.
| Оператор | Что делает | Пример | Результат |
|---|---|---|---|
+, -, * |
сложение, вычитание, умножение | 6 * 7 |
42, тип int |
/ |
обычное деление | 7 / 2 |
3.5, всегда float |
// |
целочисленное деление | 7 // 2 |
3 |
% |
остаток от деления | 7 % 2 |
1 |
** |
возведение в степень | 2 ** 10 |
1024 |
divmod() |
частное и остаток сразу | divmod(17, 5) |
(3, 2) |
abs() |
модуль числа | abs(-12) |
12 |
print(7 / 2, 7 // 2, 7 % 2)
print(-7 // 2, -7 % 2)
print(2 ** 10, pow(3, 4, 5))
print(divmod(17, 5), abs(-12))
print(type(6 / 3), type(6 // 3))
3.5 3 1
-4 1
1024 1
(3, 2) 12
<class 'float'> <class 'int'>
Обратите внимание на вторую строку. Целочисленное деление в Python округляет вниз, к минус бесконечности, а не к нулю: -7 // 2 равно −4, а не −3. Остаток при этом получается 1, потому что −4 × 2 + 1 = −7. Документация описывает это прямо: результат // всегда округляется к минус бесконечности.
Даже 6 / 3 даёт 2.0, а не 2: оператор / всегда возвращает float. Если нужно целое, делите через //. Функция pow(3, 4, 5) с третьим аргументом считает остаток от степени по модулю и не строит огромное промежуточное число. Остальные знаки собраны в шпаргалке по операторам Python, а у остатка есть свой разбор с divmod() и math.fmod().
Большие числа и лимит в 4300 цифр

В Python у целых чисел неограниченная точность, так прямо написано в официальной документации. Можно спокойно считать 2 в сотой степени и умножать такие числа друг на друга.
big = 2 ** 100
print(big)
print(big * big % 97)
import sys
n = 10 ** 5000
try:
s = str(n)
except ValueError as e:
print("ValueError:", e)
sys.set_int_max_str_digits(0)
print(len(str(n)))
1267650600228229401496703205376
62
ValueError: Exceeds the limit (4300 digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit
5001
Считать Python умеет сколько угодно, но с версии 3.11 есть ограничение на перевод числа в десятичную строку и обратно: по умолчанию до 4300 цифр. Его ввели для защиты от атак, когда огромная строка из цифр надолго занимает процессор. Двоичную и шестнадцатеричную запись лимит не трогает.
Решение: если вам правда нужно напечатать число из 5000 цифр, поднимите лимит через sys.set_int_max_str_digits(). Ноль снимает ограничение целиком. Подробности и способы задать лимит заранее описаны в разделе Integer string conversion length limitation.
Методы int
У целого числа есть свои методы. Литерал перед точкой нужно взять в скобки, иначе Python решит, что вы пишете дробь: (10).is_integer(), а не 10.is_integer().
| Метод | Что возвращает | С какой версии |
|---|---|---|
bit_length() |
сколько битов нужно, чтобы записать число без знака | 3.1 |
bit_count() |
сколько единиц в двоичной записи | 3.10 |
to_bytes() |
число в виде байтов | 3.2, аргументы по умолчанию с 3.11 |
int.from_bytes() |
число из байтов | 3.2 |
is_integer() |
всегда True, нужен для совместимости с float |
3.12 |
as_integer_ratio() |
пара (число, 1) | 3.8 |
n = 255
print(n.bit_length(), n.bit_count())
print(n.to_bytes(2, "big"))
print(int.from_bytes(b"\x00\xff", "big"))
print((10).is_integer(), 7.0.is_integer())
print(bin(n), oct(n), hex(n))
8 8
b'\x00\xff'
255
True True
0b11111111 0o377 0xff
Версии методов взяты из раздела Additional Methods on Integer Types. Встроенные bin(), oct() и hex() не методы, но работают в паре с ними: возвращают строку с двоичной, восьмеричной и шестнадцатеричной записью. Запись без префикса 0b удобнее получить через f-строку: f"{n:b}" даст 11111111. Форматы чисел внутри строк разобраны в статье про f-строки в Python.
Побитовые операции
Побитовые операторы работают с двоичной записью числа. В прикладном коде они нужны редко, зато часто встречаются в задачах и на собеседованиях.
a, b = 0b1100, 0b1010
print(a & b, a | b, a ^ b, ~a)
print(1 << 4, 64 >> 2)
n = 64
print(n > 0 and n & (n - 1) == 0)
8 14 6 -13
16 16
True
&— побитовое И,|— побитовое ИЛИ,^— исключающее ИЛИ;~aравно-(a + 1), поэтому из 12 получилось −13;<<и>>сдвигают биты: сдвиг влево на n умножает на 2 в степени n, а вправо делит нацело;- последняя строка проверяет, является ли число степенью двойки: у таких чисел в двоичной записи ровно одна единица.
Типовые задачи с int

На практике с целыми числами чаще всего решают пять задач: чётность и кратность, сумма цифр, НОД и НОК, целый корень и проверка на простоту. Такие упражнения часто стоят в первых модулях курсов по Python, а потренироваться можно на 30 задачах для начинающих.
import math
n = 2026
print(n % 2 == 0, n % 3 == 0)
print(sum(int(d) for d in str(n)))
print(math.gcd(48, 18), math.lcm(4, 6))
print(math.isqrt(50))
def is_prime(n):
if n < 2:
return False
for d in range(2, math.isqrt(n) + 1):
if n % d == 0:
return False
return True
print([x for x in range(30) if is_prime(x)])
True False
10
6 12
7
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
По строкам вывода:
- Чётное ли число и кратно ли оно трём, проверяют через остаток:
n % 2 == 0. 2026 чётное, на 3 не делится. - Разделить число на цифры проще всего через строку:
str(n)даёт символы,int(d)снова делает из них числа. - math.gcd() ищет наибольший общий делитель, а
math.lcm()находит наименьшее общее кратное. Вторая функция появилась в Python 3.9. math.isqrt(50)возвращает целую часть квадратного корня, то есть 7, без перехода кfloat.- Функция
is_prime()перебирает делители только до корня из числа: если делитель больше корня, парный к нему меньше, и мы его уже проверили.
Если функции через def пока незнакомы, начните со статьи о функциях в Python.
Частые ошибки с целыми числами
Эти ошибки встречаются у новичков чаще остальных.
Сложение строки с числом
input() всегда возвращает строку. Код age = input() и print(age + 1) упадёт с ошибкой TypeError: can only concatenate str (not "int") to str.
Решение: age = int(input()).
int() не округляет дробь
int(2.9) вернёт 2. Округление до ближайшего целого делает round(), а вверх округляет math.ceil().
Решение: выбирайте функцию под задачу. Про округление вверх есть разбор math.ceil.
Отрицательные числа и //
Код из других языков, где деление отбрасывает дробную часть, в Python даст другой ответ на отрицательных: -7 // 2 равно −4.
Решение: если нужно именно отбросить дробную часть, пишите int(-7 / 2), это −3. Для чисел больше 2 в 53-й степени ответ может разойтись на единицу, потому что деление идёт через float.
Сравнение через is
Числа сравнивают через ==. Оператор is проверяет, один ли это объект в памяти, и на числах работает непредсказуемо. Python 3.14 на строку x is 300 сам выдаёт предупреждение SyntaxWarning: "is" with 'int' literal. Did you mean "=="?.
Решение: is оставьте для None, True и False.
Где освоить Python системно
С целых чисел язык только начинается. Дальше идут строки, списки, циклы вроде while, функции и работа с файлами. Если хотите пройти этот путь по программе с проверкой заданий, а не по разрозненным статьям, сравните курсы по Python в каталоге: все курсы Python с ценами, длительностью и отзывами.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия «Python-разработчик» Перейти на сайт курса | 157 335 ₽ | 5987 ₽/мес. | 10 месяцев | Обзор курса | |
| Fullstack-разработчик на Python Перейти на сайт курса | 137 000 ₽ | 7125 ₽/мес. | 21 месяц | Обзор курса | |
| ДО Профессия Python-разработчик Перейти на сайт курса | 149 001 ₽ | 3167 ₽/мес. | 10 месяцев | Обзор курса | |
| Автоматизированное тестирование на Python Перейти на сайт курса | 122 226 ₽ | 4108 ₽/мес. | 9 месяцев | Обзор курса | |
| Программирование на Python ПРО Перейти на сайт курса | 119 600 ₽ | - | 17 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по Python




