back to top

Controllo del flusso di esecuzione con break e continue in Python

Terminare un ciclo con break

Grazie agli esempi proposti in precedenza è stato possibile introdurre l’istruzione break, quest’ultima, quando impiegata all’interno di un ciclo si occuperà di terminarlo in corrispondenza di un determinato evento, come per esempio il verificarsi di una condizione specifica o dell’eventualità opposta. Sostanzialmente break rappresenta uno strumento attraverso il quale influenzare il flusso di esecuzione di un ciclo e, più in generale, di un’applicazione.

Per quanto riguarda la sintassi richiesta da Python per i costrutti basati su di esso, sarà necessario posizionare break subito dopo il corpo del loop, sia questo un ciclo for o un ciclo while; nel caso in cui il progetto sviluppato preveda la definizione di cicli annidati (nested loops), sarà possibile inserire break dopo il corpo di un ciclo interno a quello iniziale. Data la sua natura, è logico dedurre che break sia stato concepito per essere impiegato in associazione a condizioni introdotte tramite if, nel caso di un ciclo for, per esempio, potremmo utilizzare questa istruzione per arrestare il loop in corrispondenza del verificarsi di una condizione di identità.

A questo proposito è possibile analizzare l’esempio seguente, esso infatti riassume in poche righe di codice quello che potrebbe essere il ruolo di break nel terminare un flusso di iterazione nel caso in cui la condizione definita tramite if risulti vera.

# Uso dell'istruzione break per terminare un ciclo 
# al verificarsi di una condizione introdotta con if

for val in "python":
    if val == "h":
        break
    print(val)

print("Basta così.")

Eseguendo la piccola applicazione appena proposta si otterrà in output un risultato simile a quello mostrato di seguito:

p
y
t
Basta così.

In pratica il for dovrà occuparsi di ciclare la stringa passata come argomento ("python") stampando uno per uno i caratteri che la compongono; teoricamente il loop applicato su tale parametro dovrebbe dare luogo a sei iterazioni, tante quanti sono i caratteri che compongono la stringa, ma la condizione introdotta da if richiede che venga verificata l’identità tra i carattere iterato e "h", se questa condizione dovesse essere soddisfatta allora break bloccherà l’esecuzione del ciclo impedendo ulteriori iterazioni e verrà stampata la notifica prevista per questo caso ("Basta così."). Grazie all’istruzione di terminazione inserita in un costrutto condizionale avremo quindi soltanto tre iterazioni più un messaggio (chiaramente opzionale) da parte dell’applicazione.

Gestire le iterazioni di un ciclo con continue

Come già sottolineato, break risulta particolarmente utile quando si ha l’esigenza di terminare un ciclo in corrispondenza di una condizione precedentemente definita; in alcuni casi però lo sviluppatore potrebbe non necessitare di un arresto completo del loop utilizzato e voler semplicemente evitare che quest’ultimo produca delle specifiche iterazioni. A questo scopo è disponibile un’ulteriore istruzione denominata continue, essa in pratica arresta l’iterazione che soddisfa una determinata condizione ma permette il proseguimento del ciclo nella quale viene impiegata.

Per chiarire meglio quanto detto sarà possibile proporre un semplice esempio realizzato applicando delle piccole modifiche al codice sorgente mostrato in precedenza:

# Uso dell'istruzione continue per arrestare un'iterazione
# al verificarsi di una condizione introdotta con if

for val in "python":
    if val == "h":
        continue
    print(val)

print("Ciclo completato.")

Una volta eseguita l’applicazione appena digitata si otterrà in output un risultato come quello presentato di seguito:

p
y
t
o
n
Ciclo completato.

Anche in questo caso for avrà il compito di ciclare una stringa stampando in output uno alla volta tutti i caratteri da cui è composta, ciò però non avverrà se non in parte perché if introduce una condizione di identità. Nel momento in cui il carattere iterato dovesse essere uguale ad "h" questo verrà ignorato e non parteciperà al risultato del ciclo, il loop però non verrà interrotto e verranno effettuate tutte le iterazioni successive previste.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.
Articolo precedente
Articolo successivo