Проверьте, является ли переменная целым числом или нет в Python
В этом посте мы обсудим, как проверить, является ли переменная целым числом или нет в Python.
1. Использование isinstance() функция
Стандартное решение для проверки, является ли данная переменная целым числом или нет, использует isinstance() функция. Он возвращается True если первый аргумент является экземпляром второго аргумента.
if __name__ == ‘__main__’ :
isInt = isinstance ( x , int )
print ( isInt ) # True
Вы также можете использовать числовые абстрактные базовые классы вместо конкретных классов. Чтобы проверить целочисленное значение, вы можете использовать numbers.Integral Класс Python:
import numbers
if __name__ == ‘__main__’ :
isInt = isinstance ( x , numbers . Integral )
print ( isInt ) # True
2. Использование float.is_integer() функция
Если вам нужно рассмотреть числа с плавающей запятой со всеми нулями после запятой, рассмотрите возможность использования float.is_integer() функция. Он возвращается True если экземпляр с плавающей запятой конечен с целым значением и False в противном случае.
if __name__ == ‘__main__’ :
isInt = float ( x ) . is_integer ( )
print ( isInt ) # True
3. Использование int() функция
Наконец, вы можете использовать конструктор int для проверки целочисленных значений. Функция int(x) преобразует аргумент x до целого числа. Если x уже является целым числом или числом с плавающей запятой с целым значением, то выражение int(x) == x будет соответствовать действительности.
Как проверить целое ли число java
Для проверки того, что число целое в Java можно использовать условие number % 1 == 0 Здесь % — оператор взятия остатка от деления, и если остаток от деления на 1 равен 0, то число является целым. Пример:
double number = 5.0; if (number % 1 == 0) System.out.println("Число является целым."); > else System.out.println("Число не является целым."); >
Целые числа int в Python
Обычные целые числа в Python имеют тип int и записываются как строки, состоящие из десятичных цифр. Целые числа типа int (положительные и отрицательные) имеют неограниченную точность, могут принимать сколь угодно большие значения. Тип int являются неизменяемым объектом, выполняя операцию над целыми числами, вы получаете новый числовой объект.
Целые числа поддерживают следующие операции:
- арифметические операции;
- побитовые операции;
- операции сравнения.
Тип int в языке Python представлен классом int() , он позволяет:
- преобразовать строку в целое число типа int с учетом указанного основания системы счисления (десятичные по основанию 10, шестнадцатеричные по основанию 16, восьмеричные по основанию 8 и двоичные по основанию 2).
- преобразовать вещественные числа типа float в тип int (отбрасывает дробную часть).
- преобразовать восьмеричные, шестнадцатеричные и двоичные литералы целых чисел в тип int
Класс int() не сможет преобразовать к типу int :
- числа типа complex , т.к. нет однозначного способа преобразования данного типа чисел.
- строку с записью числа с плавающей точкой (вещественного числа)
Примеры преобразования объектов к типу int :
# Преобразование строки с записью # целого числа в десятичной форме к типу int >>> int(' -3 ', base=10) # 3 # При преобразовании десятичных литералов, # записанных в строки, основание можно опускать >>> int(' +5 ') # 5 >>> int(' -15_125') # -15125 # Преобразование типа float в тип `int` >>> int(3.23) # 3 >>> int(1.) # 1 >>> int(3.14e-10) # 0 # Восьмеричные литералы и строки с ними - в тип int >>> int(0o177) # 127 >>> int(' 0o177 ', base=8) # 127 # Шестнадцатеричные литералы и строки с ними - в тип int >>> int(0x9ff) # 2559 >>> int(' 0x9ff ', base=16) # 2559 # Двоичные литералы и строки с ними - в тип int >>> int(0b101010) # 42 >>> int('0b101010', base=2) # 42
Начиная с Python 3.6, чтобы облегчить визуальную оценку величины числа, между цифрами и после любого спецификатора системы счисления разрешается вставлять одиночные символы подчеркивания.
>>> 100_000, 0x_FF_FF, 0o7_777 # (100000, 65535, 4095)
Целые числа еще могут записываться как, шестнадцатеричные (по основанию 16), восьмеричные (по основанию 8) и двоичные (по основанию 2).
- Шестнадцатеричные литералы начинаются с комбинации символов 0x или 0X, вслед за которыми следуют шестнадцатеричные цифры (0-9 и A-F). Шестнадцатеричные цифры могут вводиться как в нижнем, так и в верхнем регистре.
- Литералы восьмеричных чисел начинаются с комбинации символов 0o или 0O (ноль и следующий за ним символ «o» в верхнем или нижнем регистре), вслед за которыми следуют восьмеричные цифры (0-7).
- Двоичные литералы начинаются с комбинации символов 0b или 0B, вслед за которыми следуют двоичные цифры (0 – 1)
Все эти литералы создают объекты целых чисел, они являются всего лишь альтернативными формами записи значений. Для преобразования целого числа в строку с представлением в любой из трех систем счисления можно использовать встроенные функции hex() , oct() и bin()
Методы типа int :
int.bit_length() :
Возвращает количество битов, необходимых для представления целого числа в двоичном виде, исключая знак и начальные нули:
>>> n = -37 >>> bin(n) # '-0b100101' >>> n.bit_length() # 6
def bit_length(self): # двоичное представление: bin(-37) => '- 0b100101' s = bin(self) # удалить начальные нули и знак минус s = s.lstrip('-0b') # len('100101') => 6 return len(s)
int.bit_count() :
Добавлен в Python 3.10. Возвращает количество единиц в двоичном представлении абсолютного значения целого числа.
>>> n = 19 >>> bin(n) '0b10011' >>> n.bit_count() # 3 >>> (-n).bit_count() # 3
def bit_count(self): return bin(self).count("1")
Новое в Python 3.10.
int.to_bytes(length, byteorder, *, signed=False) :
Возвращает массив байтов, представляющих целое число. Параметры length , byteorder являются обязательными:
— length задает необходимое количество байтов,
— byteorder определяет в каком порядке возвращать байты и имеют значения ‘big’ — от старшего к младшему, ‘little’ — от младшего к старшему.
— signed позволяет установить использование дополнительного кода для представления целого числа. Если signed=False и задано отрицательное целое число, то бросается OverflowError .
>>> (1024).to_bytes(2, byteorder='big') # b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') # b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) # b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() + 7) // 8, byteorder='little') # b'\xe8\x03'
Если указанных байтов недостаточно для представления числа, то будет вызвано исключение OverflowError. Что бы узнать порядок байтов который использует платформа используйте sys.byteorder .
int.from_bytes(bytes, byteorder, *, signed=False) :
Возвращает целое число, которое соответствует указанному массиву байтов.
Параметры bytes и byteorder являются обязательными.
— bytes должен быть байто-подобным объектом (строки байтов, массивы байтов, array.array и т.д.)
— byteorder определяет в каком порядке возвращать байты и имеют значения ‘big’ — от старшего к младшему, ‘little’ — от младшего к таршему.
— signed позволяет установить использование дополнительного кода для представления целого числа. Если signed=False и задано отрицательное елое число, то бросается OverflowError .
>>> int.from_bytes(b'\x00\x7f', byteorder = 'big') # 127 >>> int.from_bytes(b'\x00\x7f', byteorder = 'little') # 32512 >>> int.from_bytes(b'\xff\x81', 'big', signed = True) # -127 >>> int.from_bytes([1, 0], 'big') # можно указать "массив" байтов # 256 >>> int.from_bytes([255, 255], 'big') # 65535
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Утиная типизация ‘Duck Typing’
- Что такое вызываемый объект callable?
- Как проверить тип переменной/объекта
- Логический тип данных bool
- Целые числа int
- Ограничение длины преобразования целочисленной строки
- Вещественные числа float
- Комплексные числа complex
- Типы последовательностей
- Список list
- Кортеж tuple
- Диапазон range
- Текстовые строки str
- Словарь dict
- Множество set и frozenset
- Итератор Iterator, протокол итератора
- Генератор generator и выражение yield
- Контекстный менеджер with
- Байтовые строки bytes
- Байтовый массив bytearray
- Тип memoryview, буфер обмена
- Файловый объект file object
- Универсальный псевдоним GenericAlias
- Объект объединения Union
Проверка на целое число
Условие задачи:
Необходимо написать ф-цию is_int, которая будет проверять: является ли число целым. При этом должны учитываться числа вроде 7.00000, которые также являются целыми.
Буду признателен за советы в оптимизации кода или идеи по другим способам решения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
def is_int(x): temp = str(x) # конвертируем в str для проверок i = 0 #счетчик while i len(temp): if temp[i] == '.': # проверяем является ли целым / узнаем индекс нуля while i + 1 len(temp): # пробегаемся по индексам после "." if temp[i + 1] != '0': # если после "." не ноль - не Int return False i += 1 else: return True i += 1 else: return True # если "." нет - следовательно Int
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Если целое число m делится нацело на целое число n, то вывести на экран частное от деления
Запросите у пользователя два целых числа m и n. Если целое число m делится нацело на целое число.
Если целое число m делится нацело на целое число n, то вывести на экран частное от деления
Запросите у пользователя два целых числа m и n. Если целое число m делится нацело на целое число n.
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
1 2 3 4 5 6
def is_int(n): return int(n) == float(n) print(is_int(1)) # true print(is_int(1.0)) # true print(is_int(1.2)) # false
Регистрация: 06.04.2017
Сообщений: 16
Можно вкратце принцип работы?
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
можно еще вариант, где проверка на исключения
1 2 3 4 5 6 7
def is_int(n): try: return int(n) == float(n) except ValueError: return -1 print(is_int('a')) # -1
приходит в функцию 1.0
int(1.0) = 1
float(1.0) = 1.0
1 == 1.0
приходит 1.1
int(1.1) = 1
float(1.1) = 1.1
1 != 1.1
Регистрация: 06.04.2017
Сообщений: 16
Очень круто. Спасибо
У меня кстати код сносный, или может есть типичные ошибки новичка?
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
def is_int(n): return n%1 == 0
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
Сообщение от mamedovvms 
def is_int(n):
* return n%1 == 0
def is_int(n): return not(n%1)
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
Сообщение от Jabbson 
да можно и без скобок)))))
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
Сообщение от mamedovvms 
да можно и без скобок)))))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Дано вещественное число A и целое число N (> 0). Используя один цикл, найти сумму
Дано вещественное число A и целое число N (> 0). Используя один цикл, найти сумму 1 + A + A^2+.

Дано вещественное число A и целое число N (> 0). Используя один цикл, найти значение выражения
Дано вещественное число A и целое число N (> 0). Используя один цикл, найти значение выражения 1.
проверка на целое число
Можно ли сделать проверку на ввод целого числа, если его тип сразу задается, как int? Просто это.

Проверка на целое число
Приветствую, я никак не могу исправить ошибку в проверке на целое число в StringGrid. Код и скрин.

Проверка целое ли число
В интернете много вариантов как это сделать но я того что мне надо так и не нашёл. Короче, надо.
