
Cet article décrit comment vérifier si un nombre est un entier ou un décimal en Python.
- Vérifiez si l’objet est int ou float :
isinstance()
- Vérifiez si float est un entier :
is_integer()
- Vérifier si la chaîne numérique est un entier
Consultez l’article suivant pour savoir comment obtenir les parties fractionnaires et entières.
Consultez l’article suivant pour vérifier si une chaîne est un nombre.
Vérifiez si l’objet est int ou float :isinstance()
Vous pouvez obtenir le type d’un objet avec la fonction intégrée type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
Vous pouvez également vérifier si un objet est d’un type particulier avec la fonction intégrée isinstance(object, type).
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
Dans ce cas, puisque seul le type est vérifié, vous ne pouvez pas vérifier si la valeur de float est un entier (la partie décimale est 0).
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Vérifiez si float est un entier :is_integer()
float a la méthode is_integer() qui renvoie True si la valeur est un entier, et False sinon.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
Par exemple, une fonction qui renvoie True pour un nombre entier (int ou entier flottant) peut être définie comme suit. Cette fonction renvoie False pour str.
def is_integer_num(n):
if isinstance(n, int):
return True
if isinstance(n, float):
return n.is_integer()
return False
print(is_integer_num(100))
# True
print(is_integer_num(1.23))
# False
print(is_integer_num(100.0))
# True
print(is_integer_num('100'))
# False
Vérifier si la chaîne numérique est un entier
Si vous souhaitez déterminer que la chaîne de nombres entiers est également un entier, la fonction suivante peut être utilisée.
Si possible, la valeur est convertie en float avec float(), puis la méthode is_integer() est appelée et le résultat est renvoyé.
def is_integer(n):
try:
float(n)
except ValueError:
return False
else:
return float(n).is_integer()
print(is_integer(100))
# True
print(is_integer(100.0))
# True
print(is_integer(1.23))
# False
print(is_integer('100'))
# True
print(is_integer('100.0'))
# True
print(is_integer('1.23'))
# False
print(is_integer('string'))
# False
Consultez les articles suivants pour plus de détails sur la conversion de chaînes en nombres et la gestion des exceptions avec try … except ….