如何计算整数中的尾随零?

18 投票
10 回答
31916 浏览
提问于 2025-04-17 08:48

我正在尝试写一个函数,用来计算一个字符串或整数后面有多少个零。下面是我正在尝试的代码,但它没有返回正确的结果。

def trailing_zeros(longint):
    manipulandum = str(longint)
    x = 0
    i = 1
    for ch in manipulandum:
        if manipulandum[-i] == '0':
            x += x
            i += 1
        else:
            return x

10 个回答

6

你可以使用位运算符:

>>> def trailing_zeros(x):
...     return (x & -x).bit_length() - 1
... 
>>> trailing_zeros(0b0110110000)
4
>>> trailing_zeros(0b0)
-1
36

对于字符串来说,最简单的方法可能就是使用 rstrip() 这个函数:

In [2]: s = '23989800000'

In [3]: len(s) - len(s.rstrip('0'))
Out[3]: 5
21

也许你可以试试这样做。这可能比逐个数每个后面的'0'要简单一些。

def trailing_zeros(longint):
    manipulandum = str(longint)
    return len(manipulandum)-len(manipulandum.rstrip('0'))

撰写回答