Salt la conținutul principal
Modulul 2 · Lecția 3 din 47/36 în curs~10 min
Lecții din modul (3/4)

rupe, continuă și altceva în bucle

În interiorul unei bucle (atât for cât și while) puteți modifica fluxul normal cu trei constructe:

  • break — iese imediat din buclă.
  • continue — omite restul corpului și trece la următoarea iterație.
  • else (pe buclă) — executat când bucla se termină fără un break.

break

Python
for n in [3, 7, 11, 4, 9]:
    if n % 2 == 0:
        primo_pari = n
        break
primo_pari  # 4

break oprește bucla cât mai curând posibil. Orice după break în corpul iterației curente NU este executat.

continue

Python
risultati = []
for n in range(1, 11):
    if n % 2 == 0:
        continue   # skip evens
    risultati.append(n * n)
risultati  # [1, 9, 25, 49, 81]

Gândiți-vă la continue ca „treceți la următoarea iterație”. Este folosit pentru filtrarea articolelor fără a adăuga încă un nivel de indentare.

else în buclă (idiom Pythonic)

O particularitate Python: buclele pot avea și un else, executat numai dacă bucla terminată natural (fără break). Este perfect pentru căutări:

Python
target = 7
for n in [2, 4, 6, 8]:
    if n == target:
        trovato = True
        break
else:
    trovato = False
trovato  # False

Citiți-l ca: "pentru fiecare n din listă; dacă luați ramura break, omiteți celălalt; altfel execută else".

Bucle imbricate: break iese doar pe cea mai interioară

Python
for x in range(3):
    for y in range(3):
        if x == y == 1:
            break
        print(x, y)

break iese numai din for y, nu din for x. Pentru a ieși din ambele trebuie să utilizați a steag sau o funcție + return.

Bucla neobișnuită... alt construct

În Python, atât buclele for cât și while pot prezenta o clauză opțională else. Blocul else este executat doar dacă bucla se finalizează normal (adică fără a întâlni o instrucțiune break). Acest lucru este foarte util pentru algoritmii de căutare (de exemplu, „căutați un element: dacă este găsit, rupeți; altfel, raportați că nu a fost găsit”).

Încercați-l singur

Exercițiu#python.m2.l3.e1
Încercări: 0Se încarcă…

Având în vedere lista `numere = [10, 15, 20, 25, 30, 35]`, găsiți primul număr divizibil cu 7 și atribuiți-l la `rezultat`. Dacă nu există, atribuiți -1.

Se încarcă editorul...
Afișează indiciu

35 este primul (și singurul) divizibil cu 7 din listă.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#python.m2.l3.e2
Încercări: 0Se încarcă…

Construiți lista „numere_impare” cu numerele impare de la 1 la 20 (inclusiv) folosind o buclă for peste intervalul (1, 21) și continuați să omiteți numărul pare.

Se încarcă editorul...
Afișează indiciu

Dacă n este par, continuă; altfel anexează.

Soluție disponibilă după 3 încercări

Provocare suplimentară

Exercițiu#python.m2.l3.e3
Încercări: 0Se încarcă…

Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.

Se încarcă editorul...
Afișează indiciu

Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.

Soluție disponibilă după 3 încercări