Condiții în Python: if, elif și else
Învață condițiile Python if, elif și else prin clasificarea unui punctaj. Verifică pragurile, indentarea și ordinea ramurilor cu exemple concrete.
În acest material
O condiție este o expresie evaluată ca adevărată sau falsă. Instrucțiunea if alege un bloc de executat în funcție de o asemenea expresie. Elif adaugă o condiție alternativă, iar else acoperă cazul în care niciuna dintre condițiile anterioare nu a fost adevărată. Un lanț if–elif–else selectează cel mult o ramură.
Ce primește și ce afișează programul
Citim un întreg punctaj între -1000 și 1000. Valorile din afara intervalului 0..100 produc INVALID. Pentru valorile valide afișăm EXCELENT de la 90 în sus, BINE de la 70 la 89, SUFICIENT de la 50 la 69 și INSUFICIENT sub 50. Pragurile sunt o convenție a exercițiului, nu o regulă oficială de notare.
Exemplu explicat pas cu pas
Pentru 75, condiția de invaliditate este falsă. Testul punctaj >= 90 este fals, apoi punctaj >= 70 este adevărat, deci afișăm BINE. Ramurile următoare nu mai sunt evaluate în acest lanț. Deși 75 satisface și punctaj >= 50, nu se afișează încă un rezultat. Pentru 100 se alege EXCELENT, iar 101 este oprit de prima ramură.
Pentru punctajul 75, pragul 90 eșuează, iar pragul 70 selectează BINE.Mărește schema ↗
Cum scriem soluția
Scriem întâi verificarea domeniului: punctaj < 0 or punctaj > 100. Operatorul or produce adevărat dacă măcar una dintre comparații este adevărată. Pentru valorile rămase, testăm pragurile în ordine descrescătoare. Fiecare antet se termină cu două puncte, iar instrucțiunea din bloc este indentată cu patru spații. Ramurile if, elif și else pornesc de la același nivel.
De ce obținem rezultatul cerut
Prima verificare elimină exact valorile interzise. După eșecul testului >=90, știm deja că punctajul este cel mult 89; de aceea testul >=70 descrie implicit intervalul 70..89. Același raționament delimitează intervalul 50..69. Ramura finală primește numai valori valide mai mici decât 50. Intervalele sunt disjuncte și acoperă toate intrările posibile.
Cost și limite
Numărul comparațiilor este limitat de cele patru praguri, astfel timpul și memoria suplimentară sunt O(1). Notația înseamnă aici că numărul pașilor nu crește dacă valoarea punctajului crește în intervalul permis.
Greșeli pe care le poți verifica
Dacă testezi >=50 înainte de >=90, un punctaj de 95 intră prea devreme în ramura SUFICIENT. Dacă înlocuiești toate elif cu if independente, mai multe mesaje pot fi afișate pentru aceeași intrare. Operatorul == verifică egalitatea, în timp ce = atribuie o valoare; nu le interschimba. Indentarea este parte din sintaxă, nu doar o alegere de aspect.
Program complet Python 3
punctaj = int(input())
if punctaj < 0 or punctaj > 100:
print("INVALID")
elif punctaj >= 90:
print("EXCELENT")
elif punctaj >= 70:
print("BINE")
elif punctaj >= 50:
print("SUFICIENT")
else:
print("INSUFICIENT")
Exersează
Testează perechile 49 și 50, 69 și 70, 89 și 90. În fiecare pereche se schimbă exact categoria de la pragul urmărit. Testează și -1, 0, 100, 101 pentru limitele domeniului. Pentru 70, explică de ce nu este necesar să scriem și punctaj <= 89 în ramura BINE.
Continuă parcursul
Pentru verificarea intrării textuale, vezi Citirea datelor în Python cu input și int. Pentru executarea repetată a unui bloc, continuă cu Repetarea cu for și range în Python. Pentru a separa o decizie într-o funcție, parcurge Funcții în Python: parametri și return.
Pentru definițiile limbajului, consultă documentația oficială Python. Exemplele și explicațiile de aici sunt originale, construite pentru acest parcurs.
Întrebări frecvente
Se pot executa două ramuri ale aceluiași lanț?
Nu. Se execută prima ramură cu condiție adevărată, sau else dacă niciuna nu este adevărată.
De ce ordinea condițiilor contează?
Condițiile se verifică de sus în jos. Un test prea general pus înainte poate intercepta valori destinate unei ramuri mai specifice.
Este obligatorie ramura else?
Nu în toate programele. Aici o folosim pentru a afișa un rezultat pentru fiecare punctaj valid rămas sub 50.
Un pas mai departe
Autentifică-te pentru a păstra progresul în cont.