2011-12-21 13 views
6

Estoy intentando escribir una función que devuelve el número de 0 finales en una cadena o entero. Esto es lo que estoy intentando y no devuelve los valores correctos.En Python, ¿cómo cuento los ceros finales en una cadena o entero?

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

"no devuelve los valores correctos"? Ayuda si proporciona los casos de prueba que está utilizando con las respuestas esperadas y las respuestas que está obteniendo. –

+0

Nuevo en este sitio, gracias por la entrada. –

+0

Supongo que querías decir 'i + = 1'. –

Respuesta

8

Puede ser que usted puede intentar hacer esto. Esto puede ser más fácil que contar cada terminador 'de

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

Me doy cuenta de que me va a gustar este sitio. Ustedes molan. –

19

Para las cadenas, es probablemente el más fácil de usar rstrip():

In [2]: s = '23989800000' 

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

+1: Inteligente ..... –

1

Se podía:

  1. Tome la longitud de la cadena de valor de lo que se esté examinando
  2. Recortar los ceros finales de una copia de la cadena
  3. Tomar la longitud de nuevo, de la cuerda recortada
  4. Reste la nueva longitud de la anterior para obtener el número de ceros al final.
0

he encontrado dos maneras de lograr esto, uno ya se ha mencionado anteriormente y el otro es casi similar 0:

manipulandum.count('0') - manipulandum.rstrip('0').count('0') 

Pero aún así, yo soy buscando alguna mejor respuesta.

Cuestiones relacionadas