Introducci贸n
Contenido
En este art铆culo, veremos algunos ejemplos de c贸mo verificar si una variable es un n煤mero en Python.
Python se escribe din谩micamente. No es necesario declarar un tipo de variable mientras se crea una instancia: el int茅rprete infiere el tipo en tiempo de ejecuci贸n:
variable = 4
another_variable="hello"
Adem谩s, una variable se puede reasignar a un nuevo tipo en cualquier momento:
# Assign a numeric value
variable = 4
# Reassign a string value
variable="four"
Este enfoque, aunque tiene ventajas, tambi茅n nos presenta algunos problemas. Es decir, cuando recibimos una variable, normalmente no sabemos de qu茅 tipo es. Si esperamos un n煤mero, pero recibimos variable
, querremos comprobar si es un n煤mero antes de trabajar con 茅l.
Uso de la funci贸n type ()
los type()
La funci贸n en Python devuelve el tipo de argumento que le pasamos, por lo que es una funci贸n 煤til para este prop贸sito:
myNumber = 1
print(type(myNumber))
myFloat = 1.0
print(type(myFloat))
myString = 's'
print(type(myString))
Esto resulta en:
<class 'int'>
<class 'float'>
<class 'str'>
Por lo tanto, una forma de verificar el tipo es:
myVariable = input('Enter a number')
if type(myVariable) == int or type(myVariable) == float:
# Do something
else:
print('The variable is not a number')
Aqu铆, verificamos si el tipo de variable, ingresado por el usuario es un int
o un float
, procediendo con el programa si es as铆. De lo contrario, notificamos al usuario que ha ingresado una variable no num茅rica. Tenga en cuenta que si est谩 comparando con varios tipos, como int
o float
, tienes que usar el type()
Funcionar en ambas ocasiones.
Si solo dij茅ramos if type(var) == int or float
, que aparentemente est谩 bien, surgir铆a un problema:
myVariable="A string"
if type(myVariable) == int or float:
print('The variable a number')
else:
print('The variable is not a number')
Esto, independientemente de la entrada, devuelve:
The variable is a number
Esto se debe a que Python comprueba los valores verdaderos de las declaraciones. Las variables en Python se pueden evaluar como True
excepto por False
, None
, 0
y contenedores vac铆os como []
, {}
, set()
, ()
, ''
o ""
.
Por lo tanto, cuando escribimos or float
en nuestro if
condici贸n, es equivalente a escribir or True
que siempre evaluar谩 a True
.
numeros Numero
Una buena forma de comprobar si una variable es un n煤mero es numbers
m贸dulo. Puede comprobar si la variable es una instancia Number
clase, con el isinstance()
funci贸n:
import numbers
variable = 5
print(isinstance(5, numbers.Number))
Esto resultar谩 en:
True
Nota: Este enfoque puede comportarse de forma inesperada con tipos num茅ricos fuera del n煤cleo de Python. Ciertos marcos pueden tener noNumber
implementaci贸n num茅rica, en cuyo caso este enfoque devolver谩 falsamente False
.
Usando un bloque try-except
Otro m茅todo para verificar si una variable es un n煤mero es usar un bloque try-except. En el bloque try, convertimos la variable dada a un int
o float
. Ejecuci贸n exitosa del try
bloque significa que una variable es un n煤mero, es decir, int
o float
:
myVariable = 1
try:
tmp = int(myVariable)
print('The variable a number')
except:
print('The variable is not a number')
Esto funciona para ambos int
y float
porque puedes lanzar un int
a float
y un float
a una int
.
Si espec铆ficamente solo desea verificar si una variable es una de estas, debe usar la type()
funci贸n.
Conclusi贸n
Python es un lenguaje escrito din谩micamente, lo que significa que podemos recibir un tipo de datos diferente al que esperamos.
En los casos en que queramos aplicar tipos de datos, vale la pena verificar si una variable es del tipo deseado. En este art铆culo, hemos cubierto tres formas de verificar si una variable es un N煤mero en Python.