Structuri Conditionale in Python
Introducere
Structurile conditionale permit executarea diferitelor blocuri de cod in functie de anumite conditii. Python foloseste if, elif si else pentru controlul fluxului.
Instructiunea if
Executa un bloc de cod doar daca o conditie este True:
varsta = 18
if varsta >= 18:
print("Esti major")
Indentarea
Important: Python foloseste indentarea (spatii) pentru a delimita blocurile de cod. Standard sunt 4 spatii.
if conditie:
# Acest bloc se executa daca conditia e True
instructiune1
instructiune2
# Aici se termina blocul if
Instructiunea if-else
Executa un bloc daca conditia e True, altul daca e False:
varsta = 16
if varsta >= 18:
print("Esti major")
else:
print("Esti minor")
Instructiunea if-elif-else
Pentru verificarea mai multor conditii:
nota = 8
if nota >= 9:
print("Excelent")
elif nota >= 7:
print("Bine")
elif nota >= 5:
print("Satisfacator")
else:
print("Nesatisfacator")
Ordinea conteaza!
Conditiile sunt evaluate de sus in jos. Prima conditie adevarata este executata:
x = 15
# Gresit - prima conditie e mereu True pentru x > 10
if x > 5:
print("Mai mare ca 5") # Se executa mereu
elif x > 10:
print("Mai mare ca 10") # Nu se ajunge aici niciodata
# Corect - ordine de la specific la general
if x > 10:
print("Mai mare ca 10") # Se executa
elif x > 5:
print("Mai mare ca 5")
Conditii Complexe
Foloseste operatori logici pentru conditii multiple:
varsta = 25
are_permis = True
# AND - ambele conditii trebuie sa fie True
if varsta >= 18 and are_permis:
print("Poate conduce")
# OR - cel putin o conditie True
nota = 4
if nota >= 5 or nota == 4:
print("Acceptat")
# NOT - neaga conditia
este_ploaie = False
if not este_ploaie:
print("Putem iesi afara")
If-uri Imbricate
Un if poate fi in interiorul altui if:
varsta = 20
are_permis = True
if varsta >= 18:
if are_permis:
print("Poate conduce")
else:
print("Trebuie sa obtina permis")
else:
print("Prea tanar pentru permis")
Expresia Conditionala (Operator Ternar)
O forma compacta pentru atribuiri conditionale:
# Sintaxa: valoare_true if conditie else valoare_false
varsta = 20
status = "major" if varsta >= 18 else "minor"
print(status) # major
# Echivalent cu:
if varsta >= 18:
status = "major"
else:
status = "minor"
Exemple practice:
# Valoare absoluta
x = -5
abs_x = x if x >= 0 else -x # 5
# Minim intre doua numere
a, b = 10, 5
minim = a if a < b else b # 5
# Paritate
n = 7
paritate = "par" if n % 2 == 0 else "impar" # impar
Instructiunea pass
pass este un placeholder pentru blocuri goale:
x = 10
if x > 5:
pass # TODO: implementare ulterioara
else:
print("x este mic")
Valori “Truthy” si “Falsy”
In conditii, urmatoarele sunt evaluate ca False:
FalseNone0,0.0""(string gol)[],(),{}(colectii goale)
Toate celelalte valori sunt True:
lista = [1, 2, 3]
# Verifica daca lista nu e goala
if lista:
print("Lista are elemente")
# Mai bine decat:
if len(lista) > 0:
print("Lista are elemente")
Compararea cu None
Foloseste is pentru compararea cu None:
rezultat = None
# Corect
if rezultat is None:
print("Fara rezultat")
# Functioneaza dar nerecomandat
if rezultat == None:
print("Fara rezultat")
Greseli Frecvente
1. Uitarea celor doua puncte
if x > 5 # SyntaxError: expected ':'
print("Mare")
if x > 5: # Corect
print("Mare")
2. Indentare incorecta
if x > 5:
print("Mare") # IndentationError
if x > 5:
print("Mare") # Corect
3. Folosirea = in loc de ==
if x = 5: # SyntaxError
print("Cinci")
if x == 5: # Corect
print("Cinci")
4. Conditii care nu se exclud
# Ambele se pot executa
if x > 5:
print("Mare")
if x > 3:
print("Si asta") # Se executa si asta!
# Doar una se executa
if x > 5:
print("Mare")
elif x > 3:
print("Mediu")
Puncte Cheie pentru Examen
- Indentarea defineste blocurile (4 spatii standard)
- Conditiile sunt evaluate de sus in jos
- Prima conditie adevarata opreste evaluarea
- Operator ternar:
val_true if cond else val_false - Valori “falsy”:
False,None,0,"",[],{} - Foloseste
is None, nu== None
Intrebari de Verificare
- Ce afiseaza:
print("Da" if 0 else "Nu")? - Cate conditii elif pot avea intr-un if?
- Ce se intampla daca uiti
:dupa if? - Ce inseamna ca o lista goala este “falsy”?