Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当给定的数字有更多的零时,为什么我的代码返回1?_Python - Fatal编程技术网

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

哦,是的,谢谢你的帮助,我用这种东西总是错的,这学期我会不及格的。