Ce face for
Bucla for din Python ia elementele unei colecții unul câte unul și rulează blocul pentru fiecare. Nu lucrezi cu indici ca în alte limbaje: variabila primește direct elementul.
Pentru a repeta de un anumit număr de ori, folosește range(). Dacă ai nevoie și de poziție, folosește enumerate(). break oprește bucla, continue trece la pasul următor, iar un bloc else după buclă rulează doar dacă bucla nu a fost oprită cu break.
Exemple
Exemplul 1: Parcurgerea unei liste și a unui text
orase = ["Iași", "Cluj", "Timișoara"]
for oras in orase:
print("Oraș:", oras)
for litera in "Ana":
print(litera)
Rezultat
Oraș: Iași
Oraș: Cluj
Oraș: Timișoara
A
n
a
Exemplul 2: Repetare cu range() și poziția cu enumerate()
for i in range(3):
print("Pasul", i)
for pozitie, fruct in enumerate(["mere", "pere"], start=1):
print(pozitie, fruct)
Rezultat
Pasul 0
Pasul 1
Pasul 2
1 mere
2 pere
Exemplul 3: Dicționar, break și else
preturi = {"pâine": 4.5, "lapte": 7, "cafea": 32.9}
for produs, pret in preturi.items():
print(f"{produs}: {pret} lei")
for numar in [3, 7, 12, 5]:
if numar > 10:
print("Primul număr mai mare ca 10:", numar)
break
else:
print("Niciun număr mai mare ca 10")
Rezultat
pâine: 4.5 lei
lapte: 7 lei
cafea: 32.9 lei
Primul număr mai mare ca 10: 12
Greșeli frecvente
- Modifici lista în timp ce o parcurgi (de exemplu ștergi elemente) și unele elemente sunt sărite. Parcurge o copie:
for x in lista[:], sau construiește o listă nouă. - Scrii
for i in len(lista)și primeștiTypeError: 'int' object is not iterable. Corect:for i in range(len(lista)), sau mai bineenumerate(lista).
Comenzi înrudite
range(): Generează un șir de numere întregi, folosit mai ales în bucle for.enumerate(): Parcurge o colecție și dă, pentru fiecare element, și poziția lui.while: Repetă un bloc de cod cât timp o condiție rămâne adevărată.break și continue: break oprește bucla; continue sare la următoarea repetare.List comprehension: Construiește o listă nouă dintr-o altă colecție, într-un singur rând.