Python: compruebe si la variable es un n煤mero

     

    Introducci贸n

    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.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *