Skip to content

Structuri repetitive

Structurile repetitive (bucle) permit executarea unui bloc de cod de mai multe ori. În loc să scrii același cod de 100 de ori, scrii o buclă care îl repetă.

Bucla for

Folosită când știi de câte ori vrei să repeți o operație.

Exemplu simplu

for i in range(1, 3):
  print("Happy Birthday!")
Happy Birthday!
Happy Birthday!

Iterare cu range()

Funcția range() generează o secvență de numere. Poate primi 1, 2 sau 3 argumente:

range(stop)              # de la 0 la stop-1
range(start, stop)       # de la start la stop-1
range(start, stop, pas)  # de la start la stop-1, cu pasul specificat

Exemple cu range()

# Afișează numerele de la 0 la 4
for i in range(5):
    print(i)
for i in range(1, 10, 1):
  print(i, end=' ')
1 2 3 4 5 6 7 8 9
# Numere pare
for i in range(0, 11, 2):
    print(i)
# Numere impare
for i in range(1, 10, 2):
  print(i, end=' ')
1 3 5 7 9
# Numărătoare inversă
for i in range(10, 0, -1):
  print(i, end=' ')
10 9 8 7 6 5 4 3 2 1

Iterare peste colecții

Bucla for poate parcurge orice colecție (listă, string, etc.):

# Iterare peste o listă
fructe = ["măr", "pară", "banană"]
for fruct in fructe:
    print(fruct)

# Iterare peste un string
for caracter in "Python":
    print(caracter)

# Iterare cu index folosind enumerate()
for index, fruct in enumerate(fructe):
    print(f"{index}: {fruct}")

Bucla while

Folosită când nu știi exact de câte ori vei repeta, dar știi condiția de oprire. Bucla continuă cât timp condiția e adevărată.

# Afișează numerele de la 1 la 5
i = 1
while i <= 5:
    print(i)
    i += 1

Exemplu: Validare input

numar = int(input("Introdu un număr pozitiv: "))
while numar <= 0:
    print("Număr invalid!")
    numar = int(input("Introdu un număr pozitiv: "))

Instrucțiuni de control

break

Oprește bucla complet, chiar dacă condiția e încă adevărată:

for i in range(10):
    if i == 5:
        break
    print(i)
# Afișează: 0, 1, 2, 3, 4

continue

Sare la următoarea iterație, ignorând restul codului din buclă pentru iterația curentă:

for i in range(5):
    if i == 2:
        continue
    print(i)
# Afișează: 0, 1, 3, 4

else în bucle

Blocul else se execută dacă bucla s-a terminat normal (fără break):

for i in range(5):
    if i == 10:
        break
else:
    print("Bucla s-a terminat fără break")

Bucle imbricate

O buclă în interiorul altei bucle:

# Tabla înmulțirii
for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} x {j} = {i*j}")
    print()  # linie goală între serii

Comparație for vs while

for while
Număr cunoscut de iterații Număr necunoscut de iterații
Iterare peste colecții Condiție de oprire
Mai puțin predispus la bucle infinite Risc de buclă infinită

Aplicații practice

Suma numerelor de la 1 la n

n = int(input("n = "))
suma = 0

for i in range(1, n + 1):
    suma += i

print(f"Suma: {suma}")

Verificare număr prim

Un număr prim este un număr natural mai mare decât 1 care nu se divide exact decât la 1 și la el însuși.

n = int(input("n = "))
este_prim = True

if n < 2:
    este_prim = False
else:
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            este_prim = False
            break

if este_prim:
    print(f"{n} este prim")
else:
    print(f"{n} nu este prim")

Ghicește numărul

import random

numar_secret = random.randint(1, 100)
incercari = 0

while True:
    ghicire = int(input("Ghicește numărul (1-100): "))
    incercari += 1

    if ghicire < numar_secret:
        print("Prea mic!")
    elif ghicire > numar_secret:
        print("Prea mare!")
    else:
        print(f"Corect! Ai ghicit în {incercari} încercări.")
        break

Exerciții

AfisareNumere

AfisareNumere2

AfisarenumerePare

AfisareNumereImpare1