Python decide: ai medie de bursă?
Programele din laboratorul trecut mergeau înainte ca un tren: pas cu pas, mereu aceleași instrucțiuni. Azi le înveți să aleagă. Produsul zilei: un program care îți cere media, o compară cu pragul de bursă și îți răspunde diferit după caz — primul tău program care decide singur ce afișează. La finalul laboratorului vei avea un consilier de burse în 15 rânduri de Python.
Ce îți trebuie
- VS Code cu Python funcțional (laboratorul 3). Test rapid:
python --versionîn terminal. - Dosarul
python-labde data trecută. - Pragul de bursă folosit azi: 9.50 pentru bursa de merit. Dacă la școala ta regulile sunt altele, folosește-le pe ale tale — programul tău, regulile tale.
- Timp: 45 de minute.
Prima decizie: if și else
- În
python-lab, creeazăbursa.py. Începe cu varianta minimă:
media = float(input("Ce medie generală ai? "))
if media >= 9.5:
print("Felicitări! Ai medie de bursă de merit.")
else:
print("Încă nu ai medie de bursă.")
Două noutăți față de data trecută: float în loc de int (media are zecimale — 9.37 nu e număr întreg) și perechea if/else.
- Citește codul înainte să-l rulezi și observă regulile jocului:
- după condiția din
ifvin două puncte; - rândurile care se execută doar în acel caz sunt împinse spre dreapta (indentate) cu Tab;
elsestă la același nivel cuif, tot cu două puncte.
- după condiția din
- Rulează de trei ori: cu 9.75, cu 8.20 și cu exact 9.50. Cazul de graniță e cel mai interesant:
>=înseamnă „mai mare sau egal", deci 9.50 primește bursă. Dacă am fi scris doar>, elevul cu exact 9.50 ar fi fost nedreptățit de un semn.
Mai multe praguri: elif
- În realitate nu există doar „da" și „nu": să zicem că școala dă bursă de merit de la 9.50 și o mențiune pe diploma de sfârșit de an de la 9.00. Trei cazuri — al treilea cuvânt-cheie,
elif(„altfel, dacă"):
media = float(input("Ce medie generală ai? "))
if media >= 9.5:
print("Bursă de merit! Felicitări!")
elif media >= 9.0:
print("Mențiune. Bursa e la", round(9.5 - media, 2), "puncte distanță.")
else:
print("Deocamdată fără bursă. Pas cu pas.")
- Detaliu important: Python citește condițiile de sus în jos și se oprește la prima adevărată. O medie de 9.8 este și peste 9.5, și peste 9.0 — dar primește doar primul mesaj, pentru că
elifnici nu mai e verificat. De asta pragurile se scriu de la mare la mic. - Fă experimentul care demonstrează regula: inversează primele două ramuri (pune
media >= 9.0prima) și rulează cu 9.8. Programul îți dă mențiune în loc de bursă — logic greșit, deși fiecare rând în parte e corect. Pune-le la loc.
Fă programul de neînșelat
- Un utilizator răutăcios scrie media 11 sau -3. Programul tău îl crede pe cuvânt — nu e bine. Adaugă la început o verificare de bun-simț:
media = float(input("Ce medie generală ai? "))
if media < 1 or media > 10:
print("Stai puțin — mediile sunt între 1 și 10.")
elif media >= 9.5:
print("Bursă de merit! Felicitări!")
elif media >= 9.0:
print("Mențiune. Aproape de bursă!")
else:
print("Deocamdată fără bursă. Pas cu pas.")
or leagă două condiții: e suficient ca una să fie adevărată. Verificarea de validitate stă prima, ca portarul la intrare — altfel media 11 ar primi fericită bursă de merit.
Dacă nu merge
IndentationError: expected an indented block. Rândul de subifnu e împins spre dreapta. Tot ce se execută „în interiorul" deciziei trebuie indentat — folosește Tab, consecvent, și nu amesteca Tab cu spații puse manual.SyntaxErrorchiar pe rândul cuif. În 9 cazuri din 10 lipsesc cele două puncte de la sfârșit. Al zecelea caz: ai scris=în loc de==într-o comparație de egalitate — un=pune valoare în variabilă, două==compară.- Programul crapă la medii cu virgulă (9,50). Python vrea punct zecimal: 9.50. Virgula românească dă
ValueError. Scrie în mesajul de lainput„cu punct, ex: 9.50" — așa fac programatorii adevărați: previn eroarea prin mesaj clar. elifdă eroare de sintaxă.elifnu poate trăi singur — trebuie să vină după unif, la exact același nivel de indentare, și înainte deelse.- Toate mediile primesc același mesaj. Verifică ordinea pragurilor (de la mare la mic) și semnele:
>=peste tot, nu un amestec de>și<.
Misiunea ta
Nivel de bază: programul cu trei ramuri și verificarea de validitate funcționează pentru toate cazurile de test din laborator.
Extindere: adaugă o a patra categorie la alegerea ta (de exemplu un mesaj special pentru media 10 exact — cu ce trebuie să înceapă lanțul de condiții ca să funcționeze?) și afișează pentru orice medie validă distanța până la următorul prag.
Provocare: scrie corigenta.py — programul care primește o singură notă de sfârșit de an și spune: sub 5 „corigent", exact 5 „la limită, a fost aproape", între 5 și 7 „de consolidat", peste 7 „stai bine". Alege singur semnele și ordinea ramurilor, apoi demonstrează cu 4 rulări (una pe ramură) că toate cazurile de graniță fac ce ai vrut.
Ai terminat când:
- rulările cu 9.8 / 9.2 / 7.0 / 11 dau patru mesaje diferite și corecte;
- cazul de graniță 9.50 primește bursă și știi care semn garantează asta;
- poți explica în două propoziții de ce pragurile se verifică de la mare la mic.