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ă unbreak.
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break oprește bucla cât mai curând posibil. Orice după break în
corpul iterației curente NU este executat.
continue
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:
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # FalseCitiț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ă
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
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.
Afișează indiciu
35 este primul (și singurul) divizibil cu 7 din listă.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
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.
Afișează indiciu
Dacă n este par, continuă; altfel anexează.
Soluție disponibilă după 3 încercări
Provocare suplimentară
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`.
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