2011-12-21 18 views
6

Próbuję napisać funkcję, która zwraca liczbę końcowych 0 w ciągu lub w liczbie całkowitej. Oto, co próbuję i nie zwraca poprawnych wartości.W Pythonie, jak policzać końcowe zera w łańcuchu lub liczbie całkowitej?

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

"nie zwraca poprawnych wartości"? Pomaga, jeśli podajesz przypadki testowe, których używasz, z oczekiwanymi odpowiedziami i odpowiedziami, które otrzymujesz. –

+0

Nowy na tej stronie, dzięki za wejście. –

+0

Chyba miałeś zamiar powiedzieć 'i + = 1'. –

Odpowiedz

8

Być może możesz spróbować tego dokonać. Może to być łatwiejsze niż liczenie każdego spływu „0 na

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

Mogę powiedzieć, że polubię tę stronę. Jesteście rockowi. –

19

Na strunach, to chyba najłatwiejsze w użyciu rstrip():

In [2]: s = '23989800000' 

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

+1: Clever ..... –

1

może po prostu:

  1. Take długość łańcucha wartości, co jesteś sprawdzanie
  2. Przycinaj zera końcowe z kopii ciągu znaków
  3. Weź długość ponownie, z przyciętego łańcucha
  4. Odejmij nową długość od starej długości, aby uzyskać liczbę zer z końcem.
0

znalazłem dwa sposoby, aby to osiągnąć, jeden jest już wspomniano powyżej, a drugi jest prawie podobna:

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

Ale nadal jestem szukanie lepszej odpowiedzi.

Powiązane problemy