当给定的数字有更多的零时,为什么我的代码返回1

  • 本文关键字:代码 返回 零时 数字 python
  • 更新时间 :
  • 英文 :


如果你有其他方法可以帮助我,我会感谢你的帮助,我尽力写了一个代码,计算给定数字中的零的数量。

这是我尝试过的代码:

def zrc(n):
    count=0
    while n%10==0 and n!=0:
        n=n%10
        count=count+1
    return count
    print(zrc(2500))

它只给出1作为代码的输出,而它必须打印2,但对于像36这样的数字,它给出0作为输出,这有什么问题?我知道这肯定有问题,而。。。

如果n%10为零,则在下一步中n为零,因此条件总是在第一个循环之后满足。您可能希望使用//而不是%:

def zrc(n):
    count = 0
    while n%10 == 0 and n != 0:
        n //= 10
        count += 1
    return count
while n%10==0 and n!=0:
    n=n%10

请参见上面的行。如果while循环中的条件为true,则将执行n=n%10行。

不管怎样,这条线都会成为你的n=0。例如,

2500%10 = 0
25000%10 = 0
250000%10 = 0

因此,在第二次迭代中,循环条件不可能是True,因此不可能多次增加count变量。

所以,无论你的n是什么,你总是得到输出1

在您的代码中,更改此:

n=n%10

对此:

n=n/10

另一种方式可能会对你有所帮助。

from collections import Counter
def zrc(n):
    valDict=Counter(str(n))
    return valDict['0']
print(zrc(2500)) 

最新更新