ZeroDivisionError: división flotante por cero en Python

Rana Hasnain Khan 21 junio 2023
ZeroDivisionError: división flotante por cero en Python

Presentaremos por qué ocurre ZeroDivisionError y cómo podemos resolverlo fácilmente con ejemplos en Python.

ZeroDivisionError: División flotante por cero en Python

Al trabajar en ecuaciones matemáticas o código que incluye expresiones matemáticas basadas en resultados, es un error común. En Python, se produce un ZeroDivisionError al intentar dividir un número por cero.

En matemáticas, es imposible dividir cualquier número por cero. Siempre que haya una situación a través de nuestro código, dividir un número por cero arrojará una excepción.

Escribamos un programa para lanzar esta excepción usando Python, como se muestra a continuación.

firstNum = 10
secondNum = 5
thirdNum = 7
forthNum = 5
print((firstNum + thirdNum) / (secondNum - forthNum))

Producción:

error de división cero en python

Como podemos ver en el ejemplo anterior, la resta de los denominadores dio como resultado 0, por lo que obtuvimos el error ZeroDivisionError. Probemos otro ejemplo con números flotantes, como se muestra a continuación.

firstNum = 10.0
secondNum = 5.0
thirdNum = 7.0
forthNum = 5.0
print((firstNum + thirdNum) / (secondNum - forthNum))

Obtendremos el siguiente mensaje de error ahora.

error de división cero usando números flotantes

Como podemos ver en los ejemplos anteriores, siempre que nuestro resultado en el denominador sea cero, bloqueará nuestra aplicación y también podría perder datos importantes durante la ejecución de un programa importante.

Es importante lidiar con este tipo de error correctamente, para proteger nuestro programa de bloqueos y pérdida de información importante.

Hay dos formas de resolver este problema, que discutiremos en detalle. La primera solución es utilizar una sentencia if-else.

Siempre nos aseguraremos de que para ejecutar la división, la diferencia de denominadores sea siempre mayor que cero. Si la diferencia entre ambos denominadores es igual a cero, solo generará el mensaje que dice que no podemos dividir por cero.

El código de la solución se muestra a continuación.

firstNum = 10.0
secondNum = 5.0
thirdNum = 7.0
forthNum = 5.0

nominators = firstNum + thirdNum
denominators = secondNum - forthNum
if denominators != 0:
    print((firstNum + thirdNum) / (secondNum - forthNum))
else:
    print("Cannot divide by zero.")

Cuando ejecutamos este código, dará el siguiente resultado.

error de división cero primera solución

Como podemos ver en el ejemplo anterior, en lugar de arrojar un error, nuestro código genera la frase que queríamos que generara si el resultado de los denominadores da como resultado 0. Nuestra segunda solución utiliza los métodos intentar y excepto, como se muestra a continuación.

firstNum = 10.0
secondNum = 5.0
thirdNum = 7.0
forthNum = 5.0

try:
    print((firstNum + thirdNum) / (secondNum - forthNum))
except:
    print("Cannot divide by zero.")

El código intentará ejecutar la expresión; si se ejecuta con éxito, mostrará el resultado; de lo contrario, mostrará la frase que dice que no podemos dividir por cero. La salida del siguiente código se muestra a continuación.

error de división cero segunda solución

Es muy importante tener en cuenta que estas soluciones solo manejan el error cuando sabemos que la fuente del error es porque el denominador es cero, pero si no está seguro si el denominador podría ser cero, es mejor verificarlo antes de hacer el operación.

En conclusión, el ZeroDivisionError: float division by zero es una excepción común en Python que ocurre cuando se intenta dividir un float por cero.

Esta excepción se puede manejar usando una declaración if y un bloque try-except. Para evitar bloqueos o producir resultados incorrectos, debemos manejar esta excepción en nuestro código.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

Artículo relacionado - Python Error