Determina si un nombre és un nombre enter o un decimal a Python.
Els casos següents s’expliquen amb codis d’exemple.
- Determina si un nombre és un enter enter o un nombre flotant de coma flotant:
isinstance()
- Determina si un nombre de tipus flotant és un nombre enter (0 decimals):
float.is_integer()
- Determina si una cadena numèrica és un nombre enter
Per obtenir els valors enters i decimals d’un nombre decimal, consulteu l’article següent.
Consulteu l’article següent per obtenir informació sobre com determinar si una cadena és un nombre (inclosos números xinesos, etc.) en lloc de si és un nombre enter o decimal.
Determina si un nombre és un tipus d’enter o de coma flotant:isinstance()
El tipus d’un objecte es pot obtenir amb la funció incorporada type().
i = 100
f = 1.23
print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>
isinstance(object, type)
Aquesta funció integrada es pot utilitzar per determinar si un objecte és d’un tipus particular. Això es pot utilitzar per determinar si un nombre és un tipus d’enter o de coma flotant.
print(isinstance(i, int))
# True
print(isinstance(i, float))
# False
print(isinstance(f, int))
# False
print(isinstance(f, float))
# True
En aquest cas, només jutja el tipus, de manera que no pot jutjar si un valor de tipus flotant és un nombre enter (amb un decimal de 0) o no.
f_i = 100.0
print(type(f_i))
# <class 'float'>
print(isinstance(f_i, int))
# False
print(isinstance(f_i, float))
# True
Determina si un nombre de tipus flotant és un nombre enter (0 decimals):float.is_integer()
El mètode is_integer() es proporciona per al tipus flotant, que retorna true si el valor és un enter i false en cas contrari.
f = 1.23
print(f.is_integer())
# False
f_i = 100.0
print(f_i.is_integer())
# True
Per exemple, una funció que retorna true per a un nombre enter es pot definir de la següent manera. D’altra banda, un tipus de cadena seria fals.
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
Determina si una cadena numèrica és un nombre enter
Si voleu determinar que una cadena de dígits enters també és un nombre enter, les funcions següents són possibles.
Per als valors que es poden convertir al tipus float amb float(), el mètode is_integer() s’aplica després de la conversió a float i es retorna el resultat.
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
Consulteu l’article següent per obtenir més informació sobre com convertir cadenes en números.
Consulteu l’article següent per obtenir més informació sobre com determinar si una cadena és un nombre (inclosos els números xinesos, etc.).