24

I faced an error when I run my program using python: The error is like this:

ZeroDivisionError: division by zero

My program is similar to this:

In [55]:

x = 0
y = 0
z = x/y
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-55-30b5d8268cca> in <module>()
      1 x = 0
      2 y = 0
----> 3 z = x/y

ZeroDivisionError: division by zero

Thus, I want to ask, how to avoid that error in python. My desired output is z = 0

Stefan Gruenwald
  • 2,512
  • 23
  • 27
markov zain
  • 10,257
  • 13
  • 32
  • 38
  • 2
    What value do you want for `1/0`? For `0/0`, any value at all makes some sense (because `x/y==z` still implies `z**y==x`), but for anything else divided by 0, no value makes sense (unless you have an infinite integer, and define `infinity*0 == 0`). – abarnert Apr 24 '15 at 01:40
  • There is an error in your logic if you come across a situation where you are dividing by zero. – RufusVS Jul 28 '21 at 01:42

3 Answers3

71

Catch the error and handle it:

try:
    z = x / y
except ZeroDivisionError:
    z = 0

Or check before you do the division:

if y == 0:
    z = 0
else:
    z = x / y

The latter can be reduced to:

z = 0 if y == 0 else (x / y) 

Or if you're sure y is a number, which implies it`s truthy if nonzero:

z = (x / y) if y else 0
z = y and (x / y)   # alternate version
kindall
  • 168,929
  • 32
  • 262
  • 294
0
# we are dividing until correct data is given
executed = False
while not executed:
    try:
        a = float(input('first number --> '))
        b = float(input('second number --> '))
        z = a / b
        print(z)
        executed = True
    except ArithmeticError as arithmeticError:
        print(arithmeticError)
    except ValueError as valueError:
        print(valueError)
    except Exception as exception:
        print(exception)
Udesh Ranjan
  • 1,661
  • 2
  • 8
  • 21
0

Returning zero instead of the division by zero error can be accomplished with a Boolean operation.

z = y and (x / y)

Boolean operations are evaluated left to right and return the operand, not True or False.

If y is 0, the value returned is y. If y is different from 0, the right side of the operation is executed and the value returned is x / y

J. Antunes
  • 169
  • 2
  • 5