285 votes

Vérifier si un nombre est int ou float

Voici comment je l'ai fait :

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

Quelque chose comme ça.
Y a-t-il des façons plus jolies de faire ça ?

403voto

user225312 Points 22699

Use isinstance.

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

Donc :

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

x is a int!

MODIFIER :

Comme indiqué, dans le cas de longs entiers, ce qui précède ne fonctionnera pas. Donc, vous devez faire :

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

158voto

Dan H Points 1889

J'aime le plus la réponse de @ ninjagecko.

Cela fonctionnerait également :

pour Python 2.x

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

Python 3.x n'a pas longtemps

isinstance(n, (int, float))

il existe également un type complexe pour des nombres complexes

66voto

ninjagecko Points 25709

(note : cela renverra True pour le type bool, au moins dans cpython, ce qui peut ne pas être ce que vous voulez. Merci aux commentateurs.)

One-liner :

isinstance(yourNumber, numbers.Real)

Cela évite certains problèmes :

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

Démo :

>>> import numbers

>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5

>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True

11voto

S.Lott Points 207588

Il est plus facile de demander pardon que de demander la permission. Il suffit d'effectuer l'opération. Si cela fonctionne, l'objet était d'un type acceptable, approprié et approprié. Si l'opération ne fonctionne pas, l'objet n'était pas d'un type approprié. Connaître le type aide rarement.

Essayez simplement l'opération et voyez si elle fonctionne.

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

10voto

user274595 Points 20

Ce que vous pouvez faire aussi est d'utilisertype() Exemple :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X