如何计算整数中的尾随零?
我正在尝试写一个函数,用来计算一个字符串或整数后面有多少个零。下面是我正在尝试的代码,但它没有返回正确的结果。
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'))