Вот как я это сделал:
inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"
Что-то в этом роде. Есть ли более красивые способы сделать это?
Вот как я это сделал:
inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"
Что-то в этом роде. Есть ли более красивые способы сделать это?
Используйте 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
Мне нравится @ninjagecko ответить больше всего.
Это также будет работать:
для Python 2.x
isinstance(n, (int, long, float))
Python 3.x не долго
isinstance(n, (int, float))
есть также комплекс типа для комплексных чисел
Однострочник:
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
Проще просить прощения, чем просить разрешения. Просто выполните операцию. Если он работает, объект имеет приемлемый, подходящий, правильный тип. Если операция не работает, объект не был подходящего типа. Знать тип редко помогает.
Просто попробуйте выполнить операцию и посмотрите, работает ли она.
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
Вы также можете использовать type()
Пример:
if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"
Здесь фрагмент кода, который проверяет, является ли число целым числом или нет, он работает как для 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)
Вы можете использовать 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"
Я знаю, что это старая тема, но это то, что я использую, и я подумал, что это может помочь.
Он работает в 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))
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, и вам нужно сравнить значения, а не типы.
как насчет этого решения?
if type(x) in (float, int):
# do whatever
else:
# do whatever
Пробовал в Python версии 3.6.3 Shell
>>> x = 12
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x,int)
True
Не могу понять, на что работать.
absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
print 'Integer number'
else:
print 'notInteger number'
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
Попробуй это...
def is_int(x):
absolute = abs(x)
rounded = round(absolute)
return absolute - rounded == 0
Обновление: попробуйте это
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)
variable.isnumeric
проверяет, является ли целое число:
if myVariable.isnumeric:
print('this varibale is numeric')
else:
print('not numeric')