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