Construcția condițională if
Construcțiile condiționale folosesc expresii condiționale și, în funcție de valoarea acestora, direcționează execuția programului pe unul dintre trasee. Una dintre aceste construcții este construcția if. Aceasta are următoarea definiție formală:
if expresie_logică:
instrucțiuni
[elif expresie_logică:
instrucțiuni]
[else:
instrucțiuni]
În cea mai simplă formă, după cuvântul cheie if urmează o expresie logică. Și dacă această expresie logică returnează True, atunci se execută blocul de instrucțiuni care urmează, fiecare dintre acestea trebuind să înceapă pe o linie nouă și să aibă indentări (recomandabil de 4 spații sau un număr de spații care este multiplu de 4):
language = "english"
if language == "english":
print("Hello")
print("End")
Deoarece în acest caz valoarea variabilei language este "english", se va executa blocul if, care conține doar o instrucțiune - print("Hello"). În consecință, consola va afișa următoarele linii:
Hello
End
Observați în cod ultima linie, care afișează mesajul "End". Aceasta nu are indentare, deci nu aparține blocului if și se va executa în orice caz, chiar dacă expresia din construcția if returnează False.
Dar dacă am fi adăugat indentări, aceasta ar fi aparținut blocului if:
language = "english"
if language == "english":
print("Hello")
print("End")
Blocul else
Dacă dorim să definim o soluție alternativă în cazul în care expresia din if returnează False, putem folosi blocul else:
language = "romanian"
if language == "english":
print("Hello")
else:
print("Salu")
print("End")
Dacă expresia language == "english" returnează True, se execută blocul if, altfel se execută blocul else. Și deoarece în acest caz condiția language == "english" returnează False, se va executa instrucțiunea din blocul else.
Instrucțiunile din blocul else trebuie, de asemenea, să aibă indentări. De exemplu, în exemplul de mai sus print("End") nu are indentare, așa că nu face parte din blocul else și se va executa indiferent de valoarea condiției language == "english". Astfel, consola va afișa următoarele linii:
Salut
End
Blocul else poate avea, de asemenea, mai multe instrucțiuni, care trebuie să aibă indentare:
language = "romanian"
if language == "english":
print("Hello")
print("World")
else:
print("Salut")
print("FdC")
elif
Dacă este necesar să introducem mai multe condiții alternative, putem folosi blocuri suplimentare elif, urmate de blocuri de instrucțiuni.
language = "german"
if language == "english":
print("Hello")
print("World")
elif language == "german":
print("Hallo")
print("Welt")
else:
print("Salut")
print("FdC")
Mai întâi, Python verifică expresia if. Dacă aceasta este True, se execută instrucțiunile din blocul if. Dacă această condiție returnează False, Python verifică expresia din elif.
Dacă expresia după elif este True, se execută instrucțiunile din blocul elif. Dar dacă aceasta este False, se execută instrucțiunile din blocul else.
Dacă este necesar, putem defini mai multe blocuri elif pentru diferite condiții. De exemplu:
language = "german"
if language == "english":
print("Hello")
elif language == "german":
print("Hallo")
elif language == "french":
print("Salut")
else:
print("Salutare")
Construcții if imbricate
Construcția if poate avea la rândul ei construcții if imbricate:
language = "english"
daytime = "morning"
if language == "english":
print("English")
if daytime == "morning":
print("Good morning")
else:
print("Good evening")
Aici, construcția if conține o construcție if/else imbricată. Adică, dacă variabila language este "english", construcția if/else imbricată verifică în plus valoarea variabilei daytime - dacă aceasta este "morning" sau nu. În acest caz, consola va afișa:
English
Good morning
Trebuie să ținem cont că expresiile if imbricate trebuie, de asemenea, să înceapă cu indentări, iar instrucțiunile din construcțiile imbricate trebuie să aibă, de asemenea, indentări. Indentările necorespunzătoare pot modifica logica programului. Astfel, exemplul anterior NU este echivalent cu următorul:
language = "english"
daytime = "morning"
if language == "english":
print("English")
if daytime == "morning":
print("Good morning")
else:
print("Good evening")
În mod similar, putem plasa construcții if/elif/else imbricate în blocurile elif și else:
language = "romanian"
daytime = "morning"
if language == "english":
if daytime == "morning":
print("Good morning")
else:
print("Good evening")
else:
if daytime == "morning":
print("Bună diminiața")
else:
print("Bună seara")