kansas
Profilo di
Nome | kansas |
---|---|
Indirizzo email | n/a |
Messaggi | 2 |
-
- 2015-12-15 12:30:43
- Re: chiarimento esercizio for + if + else
- Forum >> Principianti
- Ho riformattato il codice come doveva essere originariamente, e esplicitato meglio i dubbi.
Rileggendolo e provando in modalità interattiva diverse versioni del posizionamento dell' ELSE in questione ho fatto qualche passo avanti nella comprensione.
Grazie comunque per la dritta!
Carlo
-
- 2015-12-14 18:25:31
- chiarimento esercizio for + if + else
- Forum >> Principianti
- Ciao a tutti, faccio parte della categoria principianti^n, scrivo in merito ad un esercizio, qui in seguito, in cui non mi è chiaro come Python esegua i comandi.
primi = 2
candidato=3
while candidato < 100:
for primo in primi:
if candidato % primo == 0:
print(candidato,"è", primo,"*",candidato//primo)
break
else:
print(candidato,"è primo")
primi.append(candidato)
candidato +=2
Si tratta di un codice che scrive numeri primi:
Gli output sono i seguenti
3 è primo, infatti il ciclo for processa solo 3%2 per poi passare al comando else, primi=[2,3] e candidato=5
5 è primo, " ", 5%2 e 5%3 " ", primi=[2,3,5] e candidato=7
7 è primo, " ", 7%2 e 7%3 e 7%5 " ", primi=[2,3,5,7] e candidato=9
9 è 3*3
ecc
Faccio fatica ad accettare perché, una volta verificato che 9%3==0, Python esca dal ciclo FOR (essendoci BREAK) e passi direttamente al comando "candidato +=2" senza considerare le istruzioni di ELSE, essendo entrambi sulla stessa indentazione;
- E' quindi possibile che ELSE, trovandosi su una indentazione precedente rispetto all' IF, e quindi fuori dal ciclo FOR, sia comunque preso in considerazione come alternativa all'IF? evidentemente si, ma lo accetto a fatica
- Oppure ELSE in questo caso è utilizzato come chiusura del ciclo FOR un volta che questo è terminato e le condizioni dell' IF non sono state verificate ?
In pratica:
se ciclo FOR viene interrotto, tramite validazione della condizione IF, esce dal ciclo saltando ELSE ed eseguendo candidato+=2
se ciclo giunge al termine senza interruzioni, esegui istruzioni di ELSE e poi candidato+=2
per poi ripartire da verifica condizione WHILE
Tirando le somme non mi è chiaro come le istruzioni di ELSE possano essere eseguite se IF si trova su indentazione diversa, in particolare più avanzata.
Vi ringrazio per i vostri chiarimenti!
buona serata
--- Ultima modifica di kansas in data 2015-12-15 12:22:14 ---