Video Corso Base di Python 3

07: Il Ciclo While e le Istruzioni break e continue

Menu della Serie






Benvenuti a tutti alla settima lezione della serie!
Anche questa è una puntata dedicata alla gestione del Flusso: introdurremo infatti uno dei due cicli di Python, il Ciclo While, e due nuove istruzioni associate ai cicli, Break e Continue.

Nella puntata precedente abbiamo parlato dell'istruzione if:
Affinché la porzione di codice associata all'if venga eseguita la condizione espressa deve risultare True, e viene ignorata se risulta invece False.
Un ciclo While è simile da questo punto di vista: la grandissima differenza sta nel fatto che stavolta la porzione di codice viene eseguita più e più volte, fintanto che la condizione richiesta resta True.
Una volta che la condizione restituisce valore False, il ciclo viene interrotto. La parola "while" puó essere tradotto in italiano proprio come "finché" o "mentre".

Ho preparato due esempi, uno con if e uno con while: la condizione di innesco necessaria affinché il codice venga eseguito è la stessa in entrambi i casi:

contatore = 0
if contatore <= 10:
print(contatore)
contatore = contatore + 1

contatore = 0
while contatore <= 10:
print(contatore)
contatore = contatore + 1

In entrambi i casi è presente una variabile contatore inizializzata a 0, e la condizione affinché la sezione di codice venga eseguita è che il valore presente in contatore sia minore o uguale a 10...
Proviamo ad eseguire gli esempi, uno alla volta, partendo da if:
>>>0



IF controlla se all'interno della variabile contatore è presente un valore minore o uguale a 10... e visto che la condizione risulta True ci viene restituito il valore della variabile contatore...
Viene quindi sommato 1 al contenuto di contatore, e in fine il programma termina, comporta esattamente come abbiamo studiato fino ad ora nelle lezioni precedenti.

Proviamo ora a eseguire invece la versione col ciclo while:

>>>0
1
2
3
4
5
6
7
8
9
10

Che è successo? Semplice!



Come nel caso di if, l'istruzione while controlla se al contatore è associato un valore minore o uguale a 10: siccome la condizione risulta veritiera, il programma entra nel loop, mandando in output il contenuto di contatore, e quindi sommandoci 1.
Questo si ripete fintanto che la condizione risulta True, cioé fino a che in contatore non è presente un valore superiore a 10... caso in cui il ciclo while viene appunto interrotto.

Ma cosa succederebbe qualora la condizione di controllo restasse perennemente True? In questo caso otterremo un infinite loop, ovvero un ciclo infinito... proviamo un po:

while 15 == 15:
print('ciclo infinito!!!')

Eseguiamo...

'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
'ciclo infinito!!!'
(...)

Per quanto questo infinite loop non sia un errore del linguaggio di programmazione ma anzi, si dimostri estremamente utile, qualora vi troviate ad averne innescato uno per errore, volendo bloccarlo vi basterà cliccare CTRL-C.





Per proseguire, come abbiamo accennato a inizio lezione, ci sono due istruzioni correlate al ciclo while di cui andremo ora a parlare, e sono l'istruzione break e l'istruzione continue.

L'istruzione break serve per terminare un ciclo while prematuramente: non appena quest'espressione viene letta e processata all'interno del ciclo, ció che Python fa è bloccare il loop istantaneamente.

Combiniamo i due esempi usati in precedenza, ma incorporiamo anche l'istruzione break:

contatore = 0
while True:
print(contatore)
contatore += 1
if contatore > 10:
print('Sto uscendo dal loop!')
break

L'espressione "contatore += 1" è una versione abbreviata di contatore = contatore +1... prendetene nota perché come notate vi fa risparmiare parecchi caratteri, e alla lunga, tempo!
Una volta che nel contatore è presente il numero 10, quando al ciclo successivo viene aggiunto un 1 portandolo ad 11, la condizione espressa dall'IF diventa TRUE e viene così processato il BREAK, che blocca il loop infinito all'istante.

L'istruzione CONTINUE invece è simile al break, ma invece di interrompere il ciclo, fa saltare tutto il codice dopo l'istruzione e fa ripartire Python dalla prima riga del ciclo.
Facciamo un esempio:

contatore = 0
while contatore < 10:
contatore += 1
if contatore == 3:
print('saltato')
continue
print(contatore)

Quindi, contatore sempre inizializzato a 0, a inizio ciclo viene incrementato... se peró risulta uguale a 3, allora non viene passato a print() ma il ciclo si ripete dall'inizio.
Quando in contatore è presente 9, il valore viene incrementato portandolo a 10, e una volta mandato in output, il ciclo non risulta più True e il programma si ferma.





Ricapitolando:
-Le istruzioni presenti nel ciclo While vengono eseguite fino a che la condizione di controllo resta True;
-È possibile interrompere un ciclo infinito tramite la combinazione di tasti CTRL-C;
-L'Istruzione Break viene adoperata per interrompere un ciclo prematuramente;
-L'Istruzione Continue viene usata per saltare un ciclo e far riiniziare il loop dall'inizio;