Forum >> Principianti >> chiarimento esercizio for + if + else

Pagina: 1

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 ---
Ciao caro, purtroppo vedere codice non formattato correttamente in Python mi urta profondamente.

Forse non è chiaro, ma è una parte fondamentale del linguaggio stesso, quindi è imprescindibile per la comprensione tua ed altrui riportarla correttamente. Esiste a tale scopo il pulsante vicino alla tavolozza dei colori per formattare in maniera decente il codice, oppure esistono siti esterni come Pastebin per riportarlo.

Detto questo non capisco i tuoi dubbi, cosa ti aspetti che faccia un ciclo if o perché ti stupisci che Python esca da una scelta condizionale visto che espliciti chiaramente di farlo? Non ti seguo dove spieghi e chiedi dell'else e della sua indentazione, quando non l'hai nemmeno messo correttamente nel tuo codice.

Visto che deve essere un crescita l'apprendimento di un linguaggio di programmazione, ti consiglio di mettere a posto il tuo codice, formattalo correttamente e leggerti questa documentazione, forse ci sono già tutte le risposte che cerchi.

Ciao.
Daniele
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
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!
Bene, ne sono contento, continua così.

Cya


Pagina: 1



Esegui il login per scrivere una risposta.