Проверьте, является ли число int или float
Вот как я это сделал:
inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"
Что-то в этом роде.
Есть ли более красивые способы сделать это?
Ответы
Ответ 1
Используйте isinstance.
>>> x = 12
>>> isinstance(x, int)
True
>>> y = 12.0
>>> isinstance(y, float)
True
Итак:
>>> if isinstance(x, int):
print 'x is a int!'
x is a int!
_EDIT: _
Как уже отмечалось, в случае длинных целых чисел вышеуказанное не будет работать. Итак, вам нужно сделать:
>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False
Ответ 2
Мне нравится @ninjagecko ответить больше всего.
Это также будет работать:
для Python 2.x
isinstance(n, (int, long, float))
Python 3.x не долго
isinstance(n, (int, float))
есть также комплекс типа для комплексных чисел
Ответ 3
Однострочник:
isinstance(yourNumber, numbers.Real)
Это позволяет избежать некоторых проблем:
>>> isinstance(99**10,int)
False
Демо:
>>> import numbers
>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5
>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True
Ответ 4
Проще просить прощения, чем просить разрешения. Просто выполните операцию. Если он работает, объект имеет приемлемый, подходящий, правильный тип. Если операция не работает, объект не был подходящего типа. Знать тип редко помогает.
Просто попробуйте выполнить операцию и посмотрите, работает ли она.
inNumber = somenumber
try:
inNumberint = int(inNumber)
print "this number is an int"
except ValueError:
pass
try:
inNumberfloat = float(inNumber)
print "this number is a float"
except ValueError:
pass
Ответ 5
Вы также можете использовать type()
Пример:
if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"
Ответ 6
Здесь фрагмент кода, который проверяет, является ли число целым числом или нет, он работает как для Python 2, так и для Python 3.
import sys
if sys.version < '3':
integer_types = (int, long,)
else:
integer_types = (int,)
isinstance(yourNumber, integer_types) # returns True if it an integer
isinstance(yourNumber, float) # returns True if it a float
Обратите внимание, что Python 2 имеет оба типа int
и long
, в то время как Python 3 имеет только тип int
. Источник
Если вы хотите проверить, является ли ваш номер числом с float
, представляющим int
, сделайте это
(isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0
Если вам не нужно различать int и float, и вы согласны с любым из них, то ответ ninjagecko - это путь
import numbers
isinstance(yourNumber, numbers.Real)
Ответ 7
Вы можете использовать modulo, чтобы определить, является ли x целым числом. Метод isinstance(x, int)
определяет только, является ли x целым числом по типу:
def isInt(x):
if x%1 == 0:
print "X is an integer"
else:
print "X is not an integer"
Ответ 8
Я знаю, что это старая тема, но это то, что я использую, и я подумал, что это может помочь.
Он работает в Python 2.7 и Python 3 <.
def is_float(num):
"""
Checks whether a number is float or integer
Args:
num(float or int): The number to check
Returns:
True if the number is float
"""
return not (float(num)).is_integer()
class TestIsFloat(unittest.TestCase):
def test_float(self):
self.assertTrue(is_float(2.2))
def test_int(self):
self.assertFalse(is_float(2))
Ответ 9
pls проверить это: импортировать номера
import math
a = 1.1 - 0.1
print a
print isinstance(a, numbers.Integral)
print math.floor( a )
if (math.floor( a ) == a):
print "It is an integer number"
else:
print False
Хотя X является float, но значение целое, поэтому, если вы хотите проверить значение integer, вы не можете использовать isinstance, и вам нужно сравнить значения, а не типы.
Ответ 10
как насчет этого решения?
if type(x) in (float, int):
# do whatever
else:
# do whatever
Ответ 11
Пробовал в Python версии 3.6.3 Shell
>>> x = 12
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x,int)
True
Не могу понять, на что работать.
Ответ 12
absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
print 'Integer number'
else:
print 'notInteger number'
Ответ 13
def is_int(x):
absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
print str(x) + " is an integer"
else:
print str(x) +" is not an integer"
is_int(7.0) # will print 7.0 is an integer
Ответ 14
Попробуй это...
def is_int(x):
absolute = abs(x)
rounded = round(absolute)
return absolute - rounded == 0
Ответ 15
Обновление: попробуйте это
inNumber = [32, 12.5, 'e', 82, 52, 92, '1224.5', '12,53',
10000.000, '10,000459',
'This is a sentance, with comma number 1 and dot.', '121.124']
try:
def find_float(num):
num = num.split('.')
if num[-1] is not None and num[-1].isdigit():
return True
else:
return False
for i in inNumber:
i = str(i).replace(',', '.')
if '.' in i and find_float(i):
print('This is float', i)
elif i.isnumeric():
print('This is an integer', i)
else:
print('This is not a number ?', i)
except Exception as err:
print(err)
Ответ 16
variable.isnumeric
проверяет, является ли целое число:
if myVariable.isnumeric:
print('this varibale is numeric')
else:
print('not numeric')