
В Python существует несколько способов определить, является ли значение целым числом. Простейший метод – использовать встроенную функцию isinstance(), проверяя переменную на тип int. Например, isinstance(42, int) вернёт True, а isinstance(3.14, int) – False.
Если данные поступают в виде строки, их можно сначала преобразовать с помощью int() в блоке try-except. Такой подход позволяет обработать некорректный ввод без аварийного завершения программы. Например, int(«123») успешно преобразуется, а int(«12.3») вызовет исключение ValueError.
Для массивов чисел или значений из пользовательского ввода полезно применять комбинацию функций map() и filter(), чтобы сразу отобрать только целые числа. В случае работы с плавающими числами можно использовать проверку остатка от деления на 1 (num % 1 == 0), что позволяет отличать целые числа от дробных без приведения типов.
Использование функции isinstance для проверки типа

Функция isinstance проверяет, принадлежит ли объект определённому типу. Для проверки целого числа синтаксис выглядит так: isinstance(объект, int). Если объект имеет тип int, функция возвращает True, иначе False.
Пример проверки переменной x:
if isinstance(x, int):
print(«x является целым числом»)
Функция принимает кортеж типов, что позволяет проверять несколько типов одновременно. Например, isinstance(x, (int, float)) вернёт True для целого числа и числа с плавающей запятой.
Для динамической проверки вводимых данных рекомендуется комбинировать isinstance с обработкой исключений, чтобы корректно реагировать на неожиданные типы.
Особенность isinstance заключается в поддержке наследования: объекты подклассов распознаются как экземпляры родительского класса. Это важно, если используются кастомные числовые типы или библиотеки с собственными классами чисел.
Проверка числовой строки методом isdigit

Пример использования:
text = "12345"
if text.isdigit():
print("Строка содержит только цифры")
else:
print("Строка содержит недопустимые символы")
Метод удобен для предварительной проверки пользовательского ввода перед преобразованием в целое число с помощью int(). Для строк с пробелами, знаками минус или десятичной точкой необходимо применять дополнительные проверки или регулярные выражения.
Особенности метода:
- Пробелы и знаки минус (
-) приводят к False. - Юникодные цифры (
², ٣) также распознаются как цифры. - Метод не изменяет исходную строку.
Для практической проверки целого числа из строки часто используют комбинацию isdigit() и явного приведения типов:
user_input = input("Введите число: ")
if user_input.isdigit():
number = int(user_input)
print(number * 2)
Этот подход предотвращает ошибки преобразования и обеспечивает надёжную проверку числовых данных в формате строки. Для отрицательных чисел можно дополнительно проверять первый символ:
if user_input.lstrip('-').isdigit():
number = int(user_input)
Конвертация строки в int с обработкой ошибок

Для преобразования строки в целое число применяется функция int(). Если строка содержит недопустимые символы, возникает исключение ValueError. Для безопасного выполнения используют блок try-except.
Пример обработки одиночного значения:
text = "123"
try:
number = int(text)
except ValueError:
number = None
Переменная number получает None при некорректной строке, что предотвращает сбой программы.
При работе со списком строк удобен цикл с обработкой ошибок:
strings = ["42", "abc", "-7"]
numbers = []
for s in strings:
try:
numbers.append(int(s))
except ValueError:
numbers.append(0)
Для предварительной проверки допустимости значения используют str.isdigit(). Для отрицательных чисел применяют lstrip(«-«):
text = "-15"
if text.lstrip("-").isdigit():
number = int(text)
else:
number = 0
Метод lstrip(«-«) обеспечивает корректное распознавание отрицательных целых чисел до преобразования.
Определение целого числа через арифметические операции

В Python проверка на целое число может выполняться с помощью арифметики без использования функций типа isinstance(). Основная идея – сравнение числа с его целой частью.
- Метод с остатком от деления:
n % 1 == 0. Если остаток равен нулю, число целое. - Метод с приведением к типу int:
int(n) == n. Работает для положительных и отрицательных чисел. - Метод с функцией floor:
math.floor(n) == n. Требует импортimport math, но подходит для больших чисел с плавающей точкой.
Примеры использования:
n = 7.0if n % 1 == 0: print("Целое")n = -3.0if int(n) == n: print("Целое")import math
n = 12.0
if math.floor(n) == n: print("Целое")
Методы с арифметикой удобны при работе с числами, полученными из вычислений, где точные типы могут быть float. Проверка через % и int() не вызывает ошибок при отрицательных числах и небольших дробях.
Проверка на целое число в списке или массиве
Для проверки элементов списка на целое число используют функцию isinstance(). Она позволяет определить тип каждого элемента и выделить только целые числа. Пример для списка:
numbers = [1, 2.5, '3', 4]
integers = [x for x in numbers if isinstance(x, int)]
В результате integers будет содержать [1, 4].
Если список представлен как массив библиотеки numpy, проверку удобнее проводить через логические маски. Пример:
import numpy as np
arr = np.array([1, 2.5, 3, 4.0])
integers_mask = np.floor(arr) == arr
Здесь integers_mask вернёт [ True False True True]. Для получения самих целых чисел можно использовать arr[integers_mask].
Для фильтрации вложенных списков или многомерных массивов применяют рекурсивные функции или метод np.vectorize() с аналогичной проверкой на тип или целочисленность.
При работе с большим массивом данных numpy эффективнее, чем обычные списки, за счёт векторизации и отсутствия необходимости в явных циклах.
Использование регулярных выражений для числовых строк
Регулярные выражения позволяют проверять строки на соответствие определённым числовым формам без преобразования типов. В Python используется модуль re, который поддерживает шаблоны для целых чисел, включая знаки и ведущие нули.
Простейший шаблон для целого числа с учётом знака: ^[+-]?\d+$. Символ ^ обозначает начало строки, $ – конец. [+-]? допускает один знак, а \d+ проверяет наличие хотя бы одной цифры.
| Пример строки | Регулярное выражение | Результат проверки |
|---|---|---|
| «123» | ^[+-]?\d+$ |
Соответствует |
| «-45» | ^[+-]?\d+$ |
Соответствует |
| «+007» | ^[+-]?\d+$ |
Соответствует |
| «12.3» | ^[+-]?\d+$ |
Не соответствует |
| «abc» | ^[+-]?\d+$ |
Не соответствует |
Для проверки диапазона чисел можно использовать группировки: ^[+-]?(0|[1-9]\d*)$. Этот шаблон исключает ведущие нули в положительных числах, разрешая только «0».
Применение регулярных выражений через re.fullmatch() гарантирует, что вся строка будет проверена целиком. Например: re.fullmatch(r'^[+-]?\d+$', s) возвращает None, если строка не является целым числом, и объект совпадения, если является.
Регулярные выражения эффективны при валидации текстового ввода перед преобразованием в int, особенно при обработке данных из CSV, форм и внешних источников.
Сравнение с float для выявления целых чисел

Принципы работы:
- Используется приведение к int:
int(x)отбрасывает дробную часть. - Если
x == int(x), число можно считать целым. - Метод работает для положительных и отрицательных чисел.
Примеры:
x = 5.0; x == int(x)→ Truex = -3.0; x == int(x)→ Truex = 4.7; x == int(x)→ False
Особенности и рекомендации:
- Для больших чисел float может терять точность. Сравнение
x == int(x)может дать ложный результат дляx > 2**53. - Если исходное значение может быть результатом вычислений, используйте
math.isclose(x, int(x))с допустимой погрешностью. - Метод не требует дополнительных библиотек и работает быстрее, чем
is_integer()для базовых проверок.
Пример с учётом погрешности:
import math
x = 1.0000000000000001
if math.isclose(x, int(x), rel_tol=1e-15):
print("Целое")
else:
print("Не целое")
Использование сравнения с int удобно для проверки чисел, полученных из пользовательского ввода или файлов, где значения представлены в формате float.
Вопрос-ответ:
Как проверить, является ли переменная целым числом в Python?
В Python есть несколько способов определить, содержит ли переменная целое число. Самый простой вариант — использовать функцию isinstance(). Например, выражение isinstance(x, int) вернёт True, если переменная x хранит целое число, и False в противном случае. Этот метод работает с обычными целыми числами и числами типа bool, так как в Python True и False считаются подтипами int.
Можно ли проверить число на целочисленность, если оно хранится как строка?
Да, но потребуется предварительно проверить, можно ли строку преобразовать в целое число. Для этого можно использовать метод str.isdigit(), который вернёт True для строк, содержащих только цифры. Альтернативный подход — попытаться преобразовать строку в int через конструкцию try/except: если преобразование прошло без ошибок, значит значение является целым числом.
Чем отличается проверка целого числа от проверки числа с плавающей точкой?
Проверка целого числа обычно сводится к проверке типа переменной или её преобразования в int. Числа с плавающей точкой (float) могут иметь дробную часть, и простая проверка isinstance(x, int) для них вернёт False. Если нужно определить, можно ли число float трактовать как целое, можно использовать метод x.is_integer(), который возвращает True для 5.0 или 10.0 и False для 3.14.
Как проверить все элементы списка на целые числа?
Для проверки каждого элемента списка на целое число удобно использовать функцию all() вместе с генератором. Например, all(isinstance(i, int) for i in my_list) вернёт True только в том случае, если каждый элемент списка my_list является целым числом. Такой способ удобен для проверки больших коллекций и комбинируется с любыми другими условиями проверки.
