🐍

Bucla while

Programare Python Începător 1 min citire 0 cuvinte

Bucla while in Python

Introducere

Bucla while executa un bloc de cod cat timp o conditie este True. Este utila cand nu stim dinainte de cate ori trebuie sa repetam.

Sintaxa de Baza

while conditie:
    # bloc de cod
    # se executa cat timp conditia e True

Exemplu simplu:

contor = 1

while contor <= 5:
    print(contor)
    contor += 1  # Important: actualizeaza conditia!

# Afiseaza: 1 2 3 4 5

Anatomia unei Bucle while

# 1. Initializare
i = 0

# 2. Conditie de continuare
while i < 5:
    # 3. Corpul buclei
    print(i)

    # 4. Actualizare (evita bucla infinita!)
    i += 1

Bucle Infinite

O bucla infinita apare cand conditia nu devine niciodata False:

# GRESIT - bucla infinita!
i = 0
while i < 5:
    print(i)
    # Lipsa: i += 1

# CORECT
i = 0
while i < 5:
    print(i)
    i += 1

Bucla infinita intentionata:

while True:
    comanda = input("Comanda: ")
    if comanda == "exit":
        break  # Iese din bucla
    print(f"Ai scris: {comanda}")

Instructiunea break

break iese imediat din bucla:

i = 0
while i < 10:
    if i == 5:
        break  # Iese cand i == 5
    print(i)
    i += 1

# Afiseaza: 0 1 2 3 4

Cautarea unui element:

numere = [3, 7, 2, 9, 5]
cautat = 9
gasit = False
i = 0

while i < len(numere):
    if numere[i] == cautat:
        gasit = True
        break
    i += 1

print(f"Gasit: {gasit}")  # Gasit: True

Instructiunea continue

continue sare la urmatoarea iteratie:

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue  # Sare peste print cand i == 3
    print(i)

# Afiseaza: 1 2 4 5 (fara 3)

Filtrare numere:

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue  # Sare peste numere pare
    print(i)

# Afiseaza: 1 3 5 7 9

Clauza else la while

Blocul else se executa cand conditia devine False (nu si la break):

i = 0
while i < 3:
    print(i)
    i += 1
else:
    print("Bucla terminata normal")

# Afiseaza: 0 1 2 Bucla terminata normal

Cu break:

i = 0
while i < 5:
    if i == 3:
        break
    print(i)
    i += 1
else:
    print("Acest mesaj nu apare")  # Nu se executa!

# Afiseaza: 0 1 2

Aplicatie practica - cautare:

numere = [1, 3, 5, 7, 9]
cautat = 4

i = 0
while i < len(numere):
    if numere[i] == cautat:
        print(f"Gasit la index {i}")
        break
    i += 1
else:
    print("Nu a fost gasit")  # Se afiseaza

# Afiseaza: Nu a fost gasit

Pattern-uri Comune

Citire pana la valoare speciala:

total = 0
while True:
    numar = int(input("Numar (0 = stop): "))
    if numar == 0:
        break
    total += numar
print(f"Total: {total}")

Validare input:

while True:
    varsta = input("Varsta (1-120): ")
    if varsta.isdigit():
        varsta = int(varsta)
        if 1 <= varsta <= 120:
            break
    print("Varsta invalida!")
print(f"Varsta: {varsta}")

Numaratoare inversa:

n = 5
while n > 0:
    print(n)
    n -= 1
print("Start!")

# 5 4 3 2 1 Start!

Comparatie while vs for

Criteriu while for
Numar iteratii Necunoscut Cunoscut
Conditie Orice expresie Iterare secventa
Risc infinit Da Nu
Caz de utilizare Input utilizator Parcurgere colectii
# for - cand stii cate iteratii
for i in range(5):
    print(i)

# while - cand nu stii cate iteratii
raspuns = ""
while raspuns != "da":
    raspuns = input("Continui? ")

Greseli Frecvente

1. Bucla infinita accidentala

i = 0
while i < 5:
    print(i)
    # Lipsa: i += 1

2. Conditie gresita

i = 10
while i > 5:  # Niciodata False daca i creste
    print(i)
    i += 1    # Trebuia i -= 1

3. Off-by-one errors

# Vrei 5 iteratii dar faci 4
i = 1
while i < 5:  # 1,2,3,4 (4 iteratii)
    print(i)
    i += 1

# Corect pentru 5 iteratii
i = 1
while i <= 5:  # 1,2,3,4,5 (5 iteratii)
    print(i)
    i += 1

Puncte Cheie pentru Examen

  • while repeta cat timp conditia e True
  • break iese din bucla imediat
  • continue sare la urmatoarea iteratie
  • else la while se executa doar daca nu a fost break
  • Asigura-te ca conditia devine False la un moment dat
  • Foloseste while True + break pentru bucle cu iesire conditionata

Intrebari de Verificare

  1. Cand se executa blocul else la o bucla while?
  2. Care e diferenta intre break si continue?
  3. Cum eviti o bucla infinita?
  4. Cand folosesti while in loc de for?

📚 Articole Corelate