mercoledì 22 gennaio 2025

PYTHON - Uscire da 2 o più loop annidati

Facendo esercizi di programmazione (soprattutto Advent of Code e CodeWars) mi sono imbattuto in alcuni casi in cui, trovato un valore -ad esempio in una matrice- sarei dovuto uscire da due loop annidati.

Guardando in rete ci sono parecchi metodi per effettuare questa operazione (uso di try/catch, refactoring della funzione in modo che a quel punto esca dalla stessa, etc), però quello che mi è parso più sensato è l'utilizzo di una variabile di controllo.

Prendiamo ad esempio la ricerca della prima coppia di numeri contenuti in una lista che sono perfettamente divisibili (quindi senza resto) tra loro, con lo scopo di trovare il risultato di questa divisione.

Il codice è questo:

result = -1
el = [9, 4, 5, 7, 12, 3]

# variabile di controllo
found = False

for i in range(len(el)):
    for j in range(i + 1, len(el)):
        if el[i] % el[j] == 0:
            result = el[i] // el[j]
            found = True
            break
    if found:
        break

print(result)

Utilizziamo la variabile found per indicare che il valore è stato trovato e mettiamo dentro ogni ciclo un controllo seguito da un break.
In questo modo, una volta trovato il risultato siamo sicuri di uscire da entrambi i cicli.

Nessun commento:

Posta un commento