我正在尝试编写一个函数,该函数返回字符串或整数中的尾随0的数量。这是我正在尝试的,它没有返回正确的值。
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
答案 0 :(得分:27)
对于字符串,可能最容易使用rstrip()
:
In [2]: s = '23989800000'
In [3]: len(s) - len(s.rstrip('0'))
Out[3]: 5
答案 1 :(得分:12)
可能你可以尝试这样做。这可能比计算每个尾随'0'
更容易def trailing_zeros(longint):
manipulandum = str(longint)
return len(manipulandum)-len(manipulandum.rstrip('0'))
答案 2 :(得分:1)
你可以:
答案 3 :(得分:1)
String-Methods 有一个很明确的回答——这里是一个保留整数的方法。 您也可以通过在循环中使用带 10 的模 (%) 来获得它,然后在下一个循环中通过将其除以减少给定的数字:
def end_zeros(num: int):
n = 0
while num%10 == 0:
n += 1
num = num/10
return n
else:
return 0
没有将 num 定义为整数:
def end_zeros(num):
if num == 0:
return 1
elif num%10 == 0:
n = 0
while num%10 == 0:
n += 1
num = num/10
return n
else:
return 0
答案 4 :(得分:0)
我找到了两种方法来实现这一点,一种已在上面提到,另一种几乎相似:
manipulandum.count('0') - manipulandum.rstrip('0').count('0')
但是,我仍在寻找更好的答案。
答案 5 :(得分:0)
该问题要求计算字符串或整数中的尾随零。对于字符串,可以使用len(s) - len(s.rstrip('0'))
。但是对于整数,大概您不想先将其转换为字符串。在这种情况下,请使用递归:
def trailing_zeros(longint):
assert(longint)
return ~longint % 2 and trailing_zeros(longint/2) + 1
答案 6 :(得分:0)
如果要计算int末尾有多少个零:
def end_zeros(num):
new_num = str(num)
count = len(new_num) - len(new_num.rstrip("0"))
return count
print(end_zeros(0)) # == 1
print(end_zeros(1)) # == 0
print(end_zeros(10)) # == 1
print(end_zeros(101)) # == 0
print(end_zeros(245)) # == 0
print(end_zeros(100100)) # == 2
答案 7 :(得分:0)
这里有两个例子:
使用rstrip和海象:=运算符。请注意,它仅适用于Python 3.8及更高版本。
def end_zeros(num): 返回len(s:= str(num))-len(s.rstrip(“ 0”))
使用re.findall()函数:
从重新导入findall
def end_zeros(num): 返回len(findall(“ 0 * $”,str(num))[0])
答案 8 :(得分:0)
这里有两个例子:
def end_zeros(num):
return len(s := str(num)) - len(s.rstrip("0"))
from re import findall
def end_zeros(num):
return len(findall("0*$", str(num))[0])