Lucrare practică 4
Obiective:
-
- utilizarea structurilor de date din Python (liste, tupluri, seturi, dicționare);
- aplicarea conceptelor în prelucrarea datelor persistente din fișiere text, CSV și JSON;
- observarea diferențelor de mutabilitate/imutabilitate între tipuri de date;
- operații eficiente de transformare și filtrare (inclusiv comprehensiuni).
Sarcina de lucru:
La dispoziție sunt 4 variante; cadrul didactic responsabil de orele practice împarte variantele.
Varianta 1 — Mini-catalog studenți
Să se elaboreze un program pentru gestionarea unui mini-catalog de studenți, care:
-
- citește din
students.csv(coloane:nume, note, undenoteeste o listă separată prin spații/virgule); - consideră că fiecare student are 5 note (evaluarea 1, evaluarea 2, activitatea curentă, lucrul individual, examenul final);
- calculează nota finală astfel: media trunchiată a primelor 4 note reprezintă 60% din nota finală, iar nota de la examen reprezintă 40%;
- verifică admisibilitatea la examen: dacă cel puțin una dintre primele 4 note este
< 5, studentul nu este admis, iar nota finală devine acea notă sub 5; - generează Top 3 după medie (descrescător);
- grupează studenții pe intervale:
>= 9(excelent),8–8.99,7–7.99,< 7și salvează sumarul înrezultate.json; - afișează în consolă un tabel text cu nume, medie și grupa de performanță.
- citește din
Fișiere: intrarestudents.csv; ieșirerezultate.json.
Varianta 2 — Biblioteca (cărți & autori)
Să se elaboreze un program pentru administrarea unei colecții de cărți, care:
-
- importă din
carti.csv(coloane:titlu, autor, an, gen); - construiește structuri: setul genurilor unice; dicționar
autor → listă_cărți; dicționargen → număr_cărți; - produce o listă filtrată cu cărțile dintr-un interval de ani și o salvează în
filtru.json; - generează un top autori după numărul de titluri, salvat în
top_autori.csv(ordonat descrescător); - afișează statistici (total cărți, genuri distincte, autorul cu cele mai multe titluri).
- importă din
Fișiere: intrarecarti.csv; ieșirifiltru.json,top_autori.csv.
Varianta 3 — Agenda de contacte (JSON ↔ CSV)
Să se elaboreze un program pentru gestionarea unei agende de contacte, care:
-
- încarcă agenda din
agenda.json(listă de obiecte cu câmpuri:nume,telefon,email); - validează contactele: elimină duplicatele după
email(ordine stabilă); filtrează emailurile invalide (minim: conține@și domeniu); normalizeazătelefon(doar cifre și semnul+inițial, dacă există); - permite căutare după prefix de nume și după domeniul de email (ex.
@org.com); - exportă: CSV
agenda_curata.csv(coloane:nume, email, telefon) și JSONagenda_domenii.json— dicționardomeniu → listă_contacte(doarnume,email); - afișează în consolă: total contacte inițiale; câte au fost eliminate (duplicate/invalid); primele 5 contacte (ordonate alfabetic după nume).
- încarcă agenda din
Fișiere: intrareagenda.json; ieșiriagenda_curata.csv,agenda_domenii.json.
Varianta 4 — Vânzări & stoc (CSV → CSV + JSON)
Să se elaboreze un program pentru agregarea vânzărilor și a stocurilor, care:
-
- citește
vanzari.csv(coloane:produs, cantitate, pret) șistoc.csv(coloane:produs, stoc_minim, stoc_curent); - calculează totalul pe produs = sumă
cantitate * pret(atenție la conversii); - produce Top produse după total, salvat în
top_vanzari.csvșitop_vanzari.json(ordonat descrescător); - identifică produsele cu stoc sub minim folosind un set de produse și salvează lista în
alerte_stoc.json; - afișează în consolă un raport cu primele 5 produse după total și numărul de alerte de stoc.
- citește
Tratați linii invalide și produse lipsă într-unul din fișiere; ignorați rândurile eronate și raportați câte au fost omise.
Evaluarea rezultatelor efectuării lucrării practice:
Pontaj:
-
- Nota 5 pentru aplicație simplă conform variantei, minim 2 puncte realizate;
- +1 pentru prezentarea diagramei de fluxuri;
- +1 pentru realizarea operațiilor de calcul sau procesare date conform variantei asupra datelor citite;
- +1 pentru afișare statistici (ex: top studenți, top cărți etc) conform variantei;
- +2 pentru răspunsuri corecte la întrebările cadrului didactic.
Penalități:
-
- −1 pentru fiecare săptămână de întârziere.
- −1 pentru absență la ora practică în care a fost înmânată sarcina.
- −2 pentru nerespectarea codului de etică a studentului la ore.