Borislav Hadzhiev
Fri Apr 22 2022·2 min read
Photo by Barry
The Python "ZeroDivisionError: integer division or modulo by zero" occurs when
we use the modulo %
operator with an integer and a zero. To solve the error,
figure out where the 0
comes from and correct the assignment.
Here is an example of how the error occurs.
a = 6 b = 0 # ⛔️ ZeroDivisionError: integer division or modulo by zero result = a % b
We tried using the modulo %
operator with a zero.
It's unclear what value is expected when we divide by 0
, so Python throws an
error.
When we divide a number by 0
, the result tends towards infinity.
0
value comes from and correct the assignment.Here are some unexpected sources of 0
.
import random print(int()) # 👉️ 0 print(int(0.9)) # 👉️ 0 print(random.randint(0, 10)) # 👉️ 0 print(list(range(0, 5))) # 👉️ [0, 1, 2, 3, 4]
If you use the random.randint()
method or the range()
class, make sure to
start from 1
, and not from 0
.
You can also conditionally check if the variable doesn't store a 0
value
before using the modulo operator.
a = 6 b = 0 if b != 0: result = a % b else: # 👇️ this runs print('b is equal to 0')
Alternatively, you can use a try/except
statement.
a = 6 b = 0 try: result = a % b print(result) except ZeroDivisionError: pass
We use the modulo operator and if we get a ZeroDivisionError
, the except
block is ran.
You can set the result
variable to a value that suits your use case in the
except
block or simply pass.
The modulo (%) operator returns the remainder from the division of the first value by the second.
print(10 % 2) # 👉️ 0 print(10 % 4) # 👉️ 2
If the value on the right-hand side is zero, the operator raises a
ZeroDivisionError
exception.
The left and right-hand side values may also be floating point numbers.
If the left-hand side value is a float and the right-hand side value is 0
, you
would get a "ZeroDivisionError: float modulo" error.
# ⛔️ ZeroDivisionError: float modulo print(10.5 % 0) # 👉️ 0