The function digits, in the while loop – while (n > 0) returns 325 326 327 and 1 as the count value and if I use while (n > 1) it returns the correct number count. Any logical reason for this behavior?
def digits(n): count = 0 if n == 0: return 1 while (n > 0): count += 1 n = n / 10 return count print(digits(25)) # Should print 2 print(digits(144)) # Should print 3 print(digits(1000)) # Should print 4 print(digits(0)) # Should print 1
Advertisement
Answer
There is a difference between /
and //
.
/
does the normal division given an accurate answer upto 15 decimal places in python. However, //
is the floor division method where only the quotient of the division is returned.
try to replace:
n = n / 10
with this:
n = n // 10