如果你有其他方法可以帮助我,我会感谢你的帮助,我尽力写了一个代码,计算给定数字中的零的数量。
这是我尝试过的代码:
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))