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:
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.
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.
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.
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 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.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python