The **ZeroDivisionError in Python is raised when we try to divide a number by 0**. This is because, in mathematics, such division leads to an infinite number (∞) that cannot be physically represented/quantified.

Figure : a/b results to ZeroDivisionError if b==0 otherwise a/b is mathematically correct.

## Reproducing ZeroDivisionError (Variants of the Error)

**Depending on the nature of the division and the numeric type of the numerator, ZeroDivisionError can come in different forms**. Here is one of the forms.

1 2 3 |
a = 9.8 b = 0 a/b |

**Output:**

ZeroDivisionError: float division by zero

Other variants include:

**ZeroDivisionError: float modulo**for 9.8%0,**ZeroDivisionError: division by zero**produced by 9/0**ZeroDivisionError: integer division or modulo by zero**produced by 9//0, and,**ZeroDivisionError: complex division by zero**, produced by complex(9, 3)/0

## Solving ZeroDivisionError

Before implementing any of the two solutions discussed here, **ensure that the division by zero is the expected behavior**.

One of the most common scenarios that lead to unexpected division by zero is rounding off, which yields zero. For example, casting a float of less than one into an integer leads to ZeroDivisionError. Let’s see that in the code.

1 2 3 4 |
a = 8 b = int(3/4) # b is the same as int(0.75), equal to zero. a/b |

**Output:**

ZeroDivisionError: division by zero

Had we not rounded off 3/4 to an integer, *a/b* could have been computed without an Error, but ** int(3/4)=int(0.75)=0** hence ZeroDivisionError.

Once you are sure that division by zero is expected behavior in your computations, you can use any of the following solutions to suppress the ZeroDivisionError.

- Solution 1: Using
**conditional**, or,*if*-statement - Solution 2: Handling the error using a
.*try-except*statement

### Solution 1: Using conditional if-statement

In this case, we need to check the variable that stores the divisor. **If the divisor is 0, avoid the division**. For example,

1 2 3 4 5 6 7 8 9 |
a = 9.8 b = 0 if b == 0: result = -99 else: result = a/b print(result) |

**Output:**

-99

In the above example, the variable that stores the divisor is *b*. **Since b==0, we set the result to -99** (you can use any other value); otherwise, perform the division (

*a/b*).

We can reduce the *if*-condition in the above code snippet into a one-liner as follows:

1 2 3 4 |
a = 9.8 b = 0 result = a/b if b!=0 else -99 print(result) |

**Output:**

-99

That is to say, *result = a/b* if *b* is not equal to 0; otherwise, *result=-99*.

### Solution 2: Handling the Error using *try-except* Block

In this solution, we **attempt to perform the division (say a/b), and if the division leads to ZeroDivisionError, we perform a different operation**. Example.

1 2 3 4 5 6 7 8 9 |
a = 9.8 b = 0 try: result = a/b except ZeroDivisionError: result = -99 print(result) |

**Output:**

-99

In the above snippet, **the try-block attempts to compute a/b and assigns it to the result variable**. If ZeroDivisionError is raised (which is the case with our example),

**(once again, you can use any value that suits your case).**

*except*-block sets the variable*result*to the value*-99*## Conclusion

ZeroDivisionError occurs when you divide a number by 0. The first step to solving such an error is to ensure that your computations are correct and that division by 0 is accepted behavior.

Once you are sure there is nothing wrong with your computations, you can use the two solutions suggested in this article – using an *if*-statement or handling the error using *try-except* statements.