Python Language Rompi e continua in loop

Esempio

dichiarazione di break

Quando un'istruzione break viene eseguita all'interno di un ciclo, il flusso di controllo "si interrompe" immediatamente dal ciclo:

i = 0
while i < 7:
    print(i)
    if i == 4:
        print("Breaking from loop")
        break
    i += 1

Il ciclo condizionale non verrà valutato dopo l'esecuzione dell'istruzione break . Nota che le frasi break sono permesse solo all'interno di loop , sintatticamente. Un'istruzione break all'interno di una funzione non può essere utilizzata per terminare i loop che hanno chiamato quella funzione.

Eseguendo le seguenti stampe ogni cifra fino al numero 4 quando l'istruzione break è soddisfatta e il ciclo si ferma:

0
1
2
3
4
Breaking from loop

break istruzioni break possono anche essere utilizzate all'interno for loop, l'altro costrutto di loop fornito da Python:

for i in (0, 1, 2, 3, 4):
    print(i)
    if i == 2:
        break

L'esecuzione di questo ciclo ora stampa:

0
1
2

Si noti che 3 e 4 non vengono stampati poiché il ciclo è terminato.

Se un ciclo ha una clausola else , non viene eseguito quando il ciclo termina con un'istruzione break .

continue dichiarazione

Un'istruzione continue salterà alla successiva iterazione del ciclo ignorando il resto del blocco corrente ma continuando il ciclo. Come con la break , continue può apparire solo nei loop interni:

for i in (0, 1, 2, 3, 4, 5):
    if i == 2 or i == 4:
        continue
    print(i)

0
1
3
5

Nota che 2 e 4 non sono stampati, questo perché continue passa alla successiva iterazione invece di continuare a print(i) quando i == 2 o i == 4 .

Cicli annidati

break e continue funzionano solo su un singolo livello di loop. L'esempio seguente si interromperà solo dal ciclo for interno, non dal ciclo while esterno:

while True:
    for i in range(1,5):
        if i == 2:
            break    # Will only break out of the inner loop!

Python non ha la capacità di uscire da più livelli di loop contemporaneamente - se questo comportamento è desiderato, refactoring uno o più loop in una funzione e la sostituzione di break with return potrebbero essere la strada da percorrere.

Utilizzare il return da una funzione come una break

L' istruzione return esce da una funzione, senza eseguire il codice che viene dopo.

Se si dispone di un ciclo all'interno di una funzione, l'utilizzo del return dall'interno di quel ciclo equivale a break poiché il resto del codice del ciclo non viene eseguito (si noti che qualsiasi codice dopo il ciclo non viene eseguito neanche ):

def break_loop():
    for i in range(1, 5):
        if (i == 2):
            return(i)
        print(i)
    return(5)

Se hai cicli annidati, l'istruzione return interromperà tutti i loop:

def break_all():
    for j in range(1, 5):
        for i in range(1,4):
            if i*j == 6:
                return(i)
            print(i*j)

produrrà:

1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
# return because 2*3 = 6, the remaining iterations of both loops are not executed