Getting Zerodivisionerror: Integer Division Or Modulo By Zero
Solution 1:
ZeroDivisionError means that you were trying to divide or modulo, a number n
with 0.
in your case, z = (a/(b*d))
resulted in z = (a/0)
Also, as @theB pointed out, your factorial
function is incorrect.
Try fixing those.
Also, you don't really need ;
in your code. It's usually the case we put ;
when we want to make the code one liner.
Solution 2:
Your factorial()
function returns 0 for any input because of how you defined your range.
The range builtin starts at 0 unless otherwise defined so:
forcinrange(n):
re = re *c# no semicolons in Python
is doing:
re = re * 0
on the first iteration so for all subsequent iterations:
re = 0 * c
will always be 0
Start your range at 1 like so
forcinrange(1, n):
re *=c# The *= operator is short hand for a = a * b
you can see this more explicityly:
>>>print(list(range(5)))
[0, 1, 2, 3, 4]
>>>print(list(range(1,5)))
[1, 2, 3, 4]
>>>
or instead of rolling your own function use the one that comes with Python:
>>>from math import factorial>>>factorial(3)
6
Upon closer reading of your code it seems you tried to circumvent this by setting c = 1
outside your for
loop. This is not going to work because the variables you declared outside the loop are being reassigned inside it.
Post a Comment for "Getting Zerodivisionerror: Integer Division Or Modulo By Zero"