Python 当给定的数字有更多的零时,为什么我的代码返回1?
如果你有另一种方法可以帮助我,我会感谢你的帮助,我尽了最大努力编写了一个代码来计算给定数字中的零数 以下是我尝试的代码:Python 当给定的数字有更多的零时,为什么我的代码返回1?,python,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作为输出,有什么问题?我知道这肯定有问题,而
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作为输出,有什么问题?我知道这肯定有问题,而
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))
如果
n%10
为零,则下一步中n
为零,因此在第一次循环后,该条件始终满足。您可能希望使用/
而不是%
:
def zrc(n):
count = 0
while n%10 == 0 and n != 0:
n //= 10
count += 1
return count
哦,是的,谢谢你的帮助,我用这种东西总是错的,这学期我会不及格的。