2013-03-28 10 views
28

Sto scrivendo un semplice Python for loop per prnt il carattere corrente in una stringa. Tuttavia, non ho potuto ottenere l'indice del personaggio. Ecco cosa ho, qualcuno sa un buon modo per ottenere l'indice corrente del personaggio nel ciclo?Python Per l'indice di loop get

loopme = 'THIS IS A VERY LONG STRING WITH MANY MANY WORDS!' 

for w in loopme: 
    print "CURRENT WORD IS " + w + " AT CHARACTER " 
+1

A parte il problema di numerazione, sei sicuro che questo è ciò che si vuole? 'w' è il carattere corrente, non la parola. –

risposta

62

Utilizzare la enumerate() function per generare l'indice con gli elementi della sequenza sono looping sopra:

for index, w in enumerate(loopme): 
    print "CURRENT WORD IS", w, "AT CHARACTER", index 
+0

quindi con la funzione enumerate(), è necessario definire due variabili? uno per l'indice e uno per i personaggi? – user1817081

+0

@ user1817081: Non * avere *; si sta ora ricalcando qualcosa che produce tuple a due valori. L'uso della decompressione della tupla semplifica semplicemente "riceverli". –

+2

@ user1817081: Si può anche fare 'per elem in enumerate (loopme)', quindi usare 'elem [[0]' per il valore di indice e 'elem [1]' per il carattere, ma questo è solo più ingombrante. –

4

vuoi per iterare caratteri o parole?

Per le parole, si dovrà dividere le parole prima, come ad esempio

for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index 

Questo stampa l'indice della parola.

Per la posizione del carattere assoluto avresti bisogno di qualcosa come

chars = 0 
for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index, "AND AT CHARACTER", chars 
    chars += len(word) + 1