Skip to content Skip to sidebar Skip to footer

Getting Zerodivisionerror: Integer Division Or Modulo By Zero

I had written a simple pascal triangle code in python but I am getting a error def factorial(n): c=1 re=1 for c in range(n): re = re * c; return(re) print

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"