Forum
>>
Principianti
>>
Ciclo while
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da sedia89 |
2020-06-05 15:48:10 - Ciclo while
|
Ciao a tutti,
sto studiando Python e per svolgere un esercizio ho definito la seguente funzione: def traduzione(parola): --indice = 0 --vocali = "aeiou" --while indice < (len(parola)-2): ----for i in parola: ------if (not i in vocali) and (parola[indice+2]==i): --------print("if" + str(indice) + i) #ho inserito questo solo per capire --------indice += 1 ------else: --------print("else" + str(indice) + i) #ho inserito questo solo per capire --------indice += 1 p = "coco" traduzione(p) Compare l'errore: if (not i in vocali) and (parola[indice+2]==i): IndexError: string index out of range Ma quando indice = 2 non si dovrebbe fermare il ciclo while? Vi ringrazio, Valeria --- Ultima modifica di sedia89 in data 2020-06-05 15:52:27 --- --- Ultima modifica di sedia89 in data 2020-06-05 15:54:33 --- |
|
Scritto da RicPol |
2020-06-06 10:30:21 - Re: Ciclo while
|
sì, ma gli indici partono da zero, e 2 + 2 fa 4, e l'indice "4" nella parola "coco" non esiste.
(poi quello che stai cercando di fare è molto inutilmente aggrovigliato, ma pazienza) https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da sedia89 |
2020-06-08 17:26:50 - Re: Ciclo while
|
Ok, ho capito: avrei dovuto mettere prima il ciclo for e poi il ciclo while all'interno.
Per curiosità, come avrei potuto farlo in maniera più semplice? Grazie |
|
Scritto da RicPol |
2020-06-08 18:30:31 - Re: Ciclo while
|
> avrei dovuto mettere prima il ciclo for e poi il ciclo while all'interno
uh? Avresti dovuto fermarti in qualsiasi modo prima che "parola[indice+2]" arrivasse a fare "4". Quindi non so, invece di "len(parola)-2" fare "len(parola)-3" o va a sapere... capita spesso di fare errori della staccionata https://it.wikipedia.org/wiki/Off-by-one_error con gli indici Python, e di dover compensare. > Per curiosità, come avrei potuto farlo in maniera più semplice? Eh... non ho mica capito che cosa stai cercando di fare. https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da EL DIABLO |
2020-06-09 23:24:26 - Re: Ciclo while
|
No, hai combinato un macello. È sufficiente un ciclo for.
def traduzione(parola) : indice = 0 vocali = "aeiou" for i in parola[: -2] : if (not i in vocali) and (parola [indice + 2] == i) : print("if" + str(indice) + i) #ho inserito questo solo per capire indice += 1 else : print("else" + str(indice) + i) #ho inserito questo solo per capire indice += 1 p = "coco" traduzione(p) |
|
Scritto da EL DIABLO |
2020-06-10 00:17:57 - Re: Ciclo while
|
def funzione(p) : v = "aeiou" for x in range(len(p) - 2) : print("%s%d%s" % ("if" if not p[x] in v and p[x + 2] == p[x] else "else", x, p[x])) parola = "coco" funzione(parola) --- Ultima modifica di EL DIABLO in data 2020-06-10 01:20:44 ---
|
Pagina: 1
Esegui il login per scrivere una risposta.