函数数字,对返回值感到困惑

Kev*_*vin 0 python digits

def digits(n):
    count = 0
    if n == 0:
      digits = int(n)+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
Run Code Online (Sandbox Code Playgroud)
def digits(n):
count = 0
if n == 0:
  ___
while (___):
    count += 1
    ___
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
Run Code Online (Sandbox Code Playgroud)

问题如下:完成函数digits(n),返回该数字有多少位。例如:25 有 2 位数字,144 有 3 位数字。我缺少什么?它返回 2 3 4 0

Mih*_*nut 7

n对于等于的情况,0您只需要返回1

def digits(n):
   count = 0
   if n == 0:
      return 1
   while (n > 0):
      count += 1
      n = n//10
   return count
Run Code Online (Sandbox Code Playgroud)

对于最简单的解决方案,您可以将str构造函数与len.

def digits(n):
   return len(str(n))

print(digits(25))
print(digits(144))
print(digits(1000))
print(digits(0))
Run Code Online (Sandbox Code Playgroud)

输出

2
3
4
1
Run Code Online (Sandbox Code Playgroud)