在Python中,如何计算字符串或整数中的尾随零?

时间:2011-12-21 16:50:12

标签: python string

我正在尝试编写一个函数,该函数返回字符串或整数中的尾随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

9 个答案:

答案 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)

你可以:

  1. 获取您正在检查的字符串值的长度
  2. 修剪字符串副本
  3. 中的尾随零
  4. 再次取出修剪后的弦乐
  5. 的长度
  6. 从旧长度中减去新长度以获得尾随零的数量。

答案 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)

这里有两个例子:

  1. 使用rstrip和海象:=运算符。请注意,它仅适用于Python 3.8及更高版本。

    def end_zeros(num): 返回len(s:= str(num))-len(s.rstrip(“ 0”))

  2. 使用re.findall()函数:

    从重新导入findall

    def end_zeros(num): 返回len(findall(“ 0 * $”,str(num))[0])

答案 8 :(得分:0)

这里有两个例子:

  1. 使用rstrip和walrus := operator。请注意,它仅适用于Python 3.8及更高版本。

def end_zeros(num):
    return len(s := str(num)) - len(s.rstrip("0"))
  1. 使用findall()正则表达式(re)函数:

from re import findall
    
def end_zeros(num):
    return len(findall("0*$", str(num))[0])