2011-12-21 25 views
6

Sto provando a scrivere una funzione che restituisce il numero di 0 in coda in una stringa o in un intero. Ecco cosa sto provando e non sta restituendo i valori corretti.In Python, come faccio a contare gli zeri finali in una stringa o in un intero?

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

"non restituisce i valori corretti"? Ti aiuta se fornisci i casi di test che stai utilizzando con le risposte attese e le risposte che ottieni. –

+0

Nuovo in questo sito, grazie per l'input. –

+0

Immagino che intendessi dire "i + = 1". –

risposta

8

Potrebbe essere possibile provare a farlo. Questo può essere più facile di quanto contando ogni finale '0 di

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

Posso dire che mi piacerà questo sito. Ragazzi, rockate. –

19

Per le stringhe, è probabilmente il più facile da usare rstrip():

In [2]: s = '23989800000' 

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

+1: Clever ..... –

1

si può solo:

  1. Prendere la lunghezza del valore di stringa di ciò che si sta controllando
  2. Tagliare gli zeri finali da una copia della stringa
  3. Prendere la lunghezza di nuovo, della stringa rifilata
  4. Sottrarre la nuova lunghezza dalla vecchia lunghezza per ottenere il numero di zeri in coda.
0

ho trovato due modi per raggiungere questo obiettivo, si è già accennato in precedenza e l'altro è quasi simile:

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

Ma ancora, io sono cercando una risposta migliore

Problemi correlati