Cómo comprobar si un número es cero en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio (lab), exploraremos cómo verificar si un número es cero en Python. El laboratorio cubre conceptos fundamentales del cero, comparación directa con cero y manejo de la precisión de punto flotante.

Comenzaremos creando un script de Python para demostrar las propiedades básicas del cero, incluyendo suma, resta y multiplicación. También exploraremos el comportamiento de la división por cero, que genera un error en Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/variables_data_types -.-> lab-559556{{"Cómo comprobar si un número es cero en Python"}} python/numeric_types -.-> lab-559556{{"Cómo comprobar si un número es cero en Python"}} python/conditional_statements -.-> lab-559556{{"Cómo comprobar si un número es cero en Python"}} python/standard_libraries -.-> lab-559556{{"Cómo comprobar si un número es cero en Python"}} python/catching_exceptions -.-> lab-559556{{"Cómo comprobar si un número es cero en Python"}} end

Explorar el Concepto de Cero

En este paso, exploraremos el concepto de cero en Python. El cero es un valor numérico fundamental que representa la ausencia de cantidad. Comprender cómo se comporta el cero en diferentes contextos es crucial para escribir código Python preciso y confiable.

Primero, creemos un sencillo script de Python para demostrar las propiedades básicas del cero.

  1. Abra el editor de VS Code en el entorno de LabEx.

  2. Cree un nuevo archivo llamado zero_example.py en el directorio ~/project.

    ~/project/zero_example.py
  3. Agregue el siguiente código a zero_example.py:

    ## Assigning zero to a variable
    x = 0
    
    ## Printing the value of the variable
    print("The value of x is:", x)
    
    ## Adding a number to zero
    y = x + 5
    print("x + 5 =", y)
    
    ## Subtracting a number from zero
    z = x - 3
    print("x - 3 =", z)
    
    ## Multiplying a number by zero
    result = 10 * x
    print("10 * x =", result)

    Este script demuestra operaciones aritméticas básicas que involucran el cero.

  4. Guarde el archivo.

  5. Ejecute el script utilizando el comando python en la terminal:

    python zero_example.py

    Debería ver la siguiente salida:

    The value of x is: 0
    x + 5 = 5
    x - 3 = -3
    10 * x = 0

    Como puede ver, sumar o restar un número al cero da como resultado ese número (o su negativo), y multiplicar cualquier número por cero da como resultado cero.

Ahora, exploremos la división por cero. La división por cero está indefinida en matemáticas y generará un error en Python.

  1. Modifique el archivo zero_example.py para incluir una división por cero:

    ## Assigning zero to a variable
    x = 0
    
    ## Printing the value of the variable
    print("The value of x is:", x)
    
    ## Adding a number to zero
    y = x + 5
    print("x + 5 =", y)
    
    ## Subtracting a number from zero
    z = x - 3
    print("x - 3 =", z)
    
    ## Multiplying a number by zero
    result = 10 * x
    print("10 * x =", result)
    
    ## Division by zero (will cause an error)
    try:
        division_result = 10 / x
        print("10 / x =", division_result)
    except ZeroDivisionError as e:
        print("Error:", e)

    Utilizamos un bloque try-except para manejar el posible ZeroDivisionError.

  2. Guarde el archivo.

  3. Ejecute el script nuevamente:

    python zero_example.py

    Debería ver la siguiente salida:

    The value of x is: 0
    x + 5 = 5
    x - 3 = -3
    10 * x = 0
    Error: division by zero

    El script ahora captura el ZeroDivisionError y muestra un mensaje de error informativo en lugar de fallar.

Comprender cómo manejar el cero en su código es esencial para prevenir errores inesperados y garantizar que sus programas se comporten correctamente.

Comparar Directamente con Cero

En este paso, aprenderemos cómo comparar números directamente con cero en Python. La comparación directa es una forma sencilla de verificar si un número es igual a, mayor que o menor que cero. Esta es una operación común en muchas tareas de programación, como validar entradas, controlar el flujo del programa e implementar funciones matemáticas.

Creemos un script de Python para demostrar la comparación directa con cero.

  1. Abra el editor de VS Code en el entorno de LabEx.

  2. Cree un nuevo archivo llamado compare_zero.py en el directorio ~/project.

    ~/project/compare_zero.py
  3. Agregue el siguiente código a compare_zero.py:

    ## Assigning a number to a variable
    number = 5
    
    ## Comparing the number with zero
    if number > 0:
        print(number, "is greater than zero")
    elif number < 0:
        print(number, "is less than zero")
    else:
        print(number, "is equal to zero")
    
    ## Changing the value of the number to zero
    number = 0
    
    ## Comparing the number with zero again
    if number > 0:
        print(number, "is greater than zero")
    elif number < 0:
        print(number, "is less than zero")
    else:
        print(number, "is equal to zero")
    
    ## Changing the value of the number to a negative number
    number = -3
    
    ## Comparing the number with zero one more time
    if number > 0:
        print(number, "is greater than zero")
    elif number < 0:
        print(number, "is less than zero")
    else:
        print(number, "is equal to zero")

    Este script compara diferentes números con cero utilizando declaraciones if, elif y else.

  4. Guarde el archivo.

  5. Ejecute el script utilizando el comando python en la terminal:

    python compare_zero.py

    Debería ver la siguiente salida:

    5 is greater than zero
    0 is equal to zero
    -3 is less than zero

    El script identifica correctamente si el número es mayor que, menor que o igual a cero.

La comparación directa con cero es simple y eficiente para valores enteros. Sin embargo, cuando se trabaja con números de punto flotante, se debe tener precaución debido a posibles problemas de precisión, que exploraremos en el siguiente paso.

Manejar la Precisión de Punto Flotante

En este paso, discutiremos cómo manejar la precisión de punto flotante cuando se comparan números de punto flotante con cero. Debido a la forma en que se representan los números de punto flotante en las computadoras, a menudo están sujetos a pequeños errores de redondeo. Esto puede llevar a resultados inesperados cuando se los compara directamente con cero.

Por ejemplo, un cálculo que teóricamente debería dar como resultado cero en realidad podría producir un número no nulo muy pequeño como 1e-16 (0.0000000000000001). Comparar directamente este número con cero utilizando == devolverá False, lo cual podría no ser el resultado deseado.

Para manejar esto, normalmente se utiliza un valor de tolerancia (también conocido como épsilon) para verificar si un número de punto flotante está "lo suficientemente cerca" de cero.

Creemos un script de Python para demostrar esto.

  1. Abra el editor de VS Code en el entorno de LabEx.

  2. Cree un nuevo archivo llamado float_precision.py en el directorio ~/project.

    ~/project/float_precision.py
  3. Agregue el siguiente código a float_precision.py:

    ## Import the math module
    import math
    
    ## Define a tolerance value (epsilon)
    tolerance = 1e-9  ## A small value like 0.000000001
    
    ## A floating-point number that is very close to zero due to calculation
    number = 1e-10
    
    ## Direct comparison with zero (may fail)
    if number == 0:
        print("Direct comparison: number is zero")
    else:
        print("Direct comparison: number is not zero")
    
    ## Using tolerance to compare with zero
    if math.isclose(number, 0, abs_tol=tolerance):
        print("Comparison with tolerance: number is close to zero")
    else:
        print("Comparison with tolerance: number is not close to zero")
    
    ## Another example with a slightly larger number
    number = 1e-7
    
    ## Direct comparison with zero (will fail)
    if number == 0:
        print("Direct comparison: number is zero")
    else:
        print("Direct comparison: number is not zero")
    
    ## Using tolerance to compare with zero
    if math.isclose(number, 0, abs_tol=tolerance):
        print("Comparison with tolerance: number is close to zero")
    else:
        print("Comparison with tolerance: number is not close to zero")

    Este script demuestra cómo usar la función math.isclose() con un valor de tolerancia para comparar números de punto flotante con cero.

  4. Guarde el archivo.

  5. Ejecute el script utilizando el comando python en la terminal:

    python float_precision.py

    Debería ver la siguiente salida:

    Direct comparison: number is not zero
    Comparison with tolerance: number is close to zero
    Direct comparison: number is not zero
    Comparison with tolerance: number is not close to zero

    Como puede ver, la comparación directa falla porque el número no es exactamente cero. Sin embargo, cuando se utiliza un valor de tolerancia con math.isclose(), la comparación identifica correctamente que el número está cerca de cero.

La función math.isclose() verifica si dos valores de punto flotante están cerca el uno del otro dentro de una tolerancia especificada. El argumento abs_tol especifica la tolerancia absoluta. Si la diferencia absoluta entre los dos números es menor o igual a la tolerancia, la función devuelve True.

Al utilizar un valor de tolerancia, se pueden evitar los problemas causados por la precisión de punto flotante y garantizar que las comparaciones con cero sean precisas y confiables.

Resumen

En este laboratorio, comenzamos explorando el concepto fundamental de cero en Python, comprendiendo su comportamiento en operaciones aritméticas básicas. Creamos un script zero_example.py para demostrar que sumar o restar un número a cero da como resultado ese número (o su negativo), y multiplicar cualquier número por cero da como resultado cero.

Se ejecutó el script para observar estas propiedades, lo que sentó las bases para una mayor exploración del cero en Python, incluyendo las implicaciones de la división por cero.