Compruebe si un número es int o float

Así es como lo hice:

inNumber = somenumber inNumberint = int(inNumber) if inNumber == inNumberint: print "this number is an int" else: print "this number is a float" 

Algo como eso.
¿Hay alguna forma más bonita de hacer esto?

Utilice isinstance .

 >>> x = 12 >>> isinstance(x, int) True >>> y = 12.0 >>> isinstance(y, float) True 

Asi que:

 >>> if isinstance(x, int): print 'x is a int!' x is a int! 

_EDITAR:_

Como se señaló, en el caso de los enteros largos, lo anterior no funcionará. Así que tienes que hacer:

 >>> x = 12L >>> import numbers >>> isinstance(x, numbers.Integral) True >>> isinstance(x, int) False 

Me gusta más la respuesta de @ ninjagecko.

Esto también funcionaría:

para Python 2.x

 isinstance(n, (int, long, float)) 

Python 3.x no tiene mucho tiempo

 isinstance(n, (int, float)) 

También hay tipos complejos para números complejos.

Un trazador de líneas:

 isinstance(yourNumber, numbers.Real) 

Esto evita algunos problemas:

 >>> isinstance(99**10,int) False 

Manifestación:

 >>> import numbers >>> someInt = 10 >>> someLongInt = 100000L >>> someFloat = 0.5 >>> isinstance(someInt, numbers.Real) True >>> isinstance(someLongInt, numbers.Real) True >>> isinstance(someFloat, numbers.Real) True 

Es más fácil pedir perdón que pedir permiso. Simplemente realice la operación. Si funciona, el objeto era de un tipo adecuado, adecuado y adecuado. Si la operación no funciona, el objeto no era del tipo adecuado. Saber el tipo rara vez ayuda.

Simplemente intente la operación y vea si funciona.

 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 

Lo que puedes hacer también es usar type() Ejemplo:

 if type(inNumber) == int : print "This number is an int" elif type(inNumber) == float : print "This number is a float" 

Aquí hay un fragmento de código que verifica si un número es un número entero o no, funciona tanto para Python 2 como para Python 3.

 import sys if sys.version < '3': integer_types = (int, long,) else: integer_types = (int,) isinstance(yourNumber, integer_types) # returns True if it's an integer isinstance(yourNumber, float) # returns True if it's a float 

Tenga en cuenta que Python 2 tiene ambos tipos int y long , mientras que Python 3 solo tiene tipo int . Fuente

Si desea verificar si su número es un float que representa un int , haga esto

 (isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0 

Si no necesita distinguir entre int y float, y está de acuerdo con cualquiera de las dos, entonces la respuesta de ninjagecko es el camino a seguir.

 import numbers isinstance(yourNumber, numbers.Real) 

Puede usar el módulo para determinar si x es un número entero numéricamente. El isinstance(x, int) solo determina si x es un número entero por tipo:

 def isInt(x): if x%1 == 0: print "X is an integer" else: print "X is not an integer" 

compruebe esto: números de importación

 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 

Aunque X es flotante pero el valor es entero, por lo tanto, si desea verificar que el valor sea entero, no puede usar isinstance y necesita comparar valores y no tipos.

¿Qué tal esta solución?

 if type(x) in (float, int): # do whatever else: # do whatever 

Sé que es un hilo viejo, pero esto es algo que estoy usando y pensé que podría ayudar.

Funciona en python 2.7 y 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)) 

Prueba esto…

 def is_int(x): absolute = abs(x) rounded = round(absolute) return absolute - rounded == 0 

Probado en Python versión 3.6.3 Shell

 >>> x = 12 >>> import numbers >>> isinstance(x, numbers.Integral) True >>> isinstance(x,int) True 

No se pudo encontrar nada para qué trabajar.

 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 

variable.isnumeric comprueba si un valor es un entero:

  if myVariable.isnumeric: print('this varibale is numeric') else: print('not numeric')