Profilo di kansas

Nome kansas
Indirizzo email n/a
Messaggi2
  • 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
  • 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 ---