Școala Româno-Britanică
Modulul 2 Clasa a IX-a | Python

Ora 7: Recapitulare și test

Ce vei învăța astăzi: Integrarea cunoștințelor și evaluare

Rezultat practic: Recapitulezi lucrul cu liste și rezolvi independent probleme integrate de gestionare a datelor.

Săptămâna 11

Înainte de a începe

De ce contează? Recapitularea (reluarea sistematică a noțiunilor învățate) îți arată cum se leagă toate noțiunile modulului într-o singură problemă reală: citim în listă, parcurgem, transformăm și numărăm. Rezolvarea integrată îți dă încrederea necesară pentru test.

Ce știi deja?

În lecția anterioară, „Lista de frecvențe", ai învățat să inițializezi lista cu [0] * 11 și să o incrementezi cu fr[x] += 1. Ce reprezintă, de fapt, valoarea fr[8] după ce am numărat notele unei clase?

Ideea-cheie: O problemă integrată (o problemă care combină noțiuni din mai multe lecții) combină lista, stiva sau coada, operatorii, metodele, parcurgerea și frecvențele (listele care numără aparițiile valorilor dintr-un interval mic): alegem instrumentul potrivit în funcție de întrebarea enunțului, iar ordinea operațiilor trebuie gândită dinainte.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

În această lecție recapitulăm tot modulul: lista, stiva și coada, operatorii, metodele, parcurgerea și lista de frecvențe, apoi rezolvăm probleme care combină toate cunoștințele.

Recapitularea listei, stivei și cozii
Operatorii și metodele clasei list
Parcurgerea cu și fără memorare
Lista de frecvențe în probleme combinate

Recapitulare: ce am învățat în modul

Lista este un model conceptual liniar de organizare a datelor, cu acces direct la elemente după index. Stiva respectă principiul LIFO, iar coada principiul FIFO.

Noțiune Ideea principală Instrument în Python
Lista Model liniar, acces direct după index v = [1, 2, 3], v[0]
Stiva LIFO: ultimul introdus, primul scos append(), pop()
Coada FIFO: primul introdus, primul scos append(), pop(0)
Operatori Indexare, apartenență, concatenare, multiplicare [], in, +, *
Metode Adăugare, ștergere, căutare, sortare append, remove, sort
Parcurgere Cu sau fără memorare, sume și contoare for x in v, sum(), len()
Lista de frecvențe Numără aparițiile fiecărei valori fr = [0] * 11, fr[x] += 1

Problemă combinată: gestionarea unei liste de activități

Aplicăm tot ce am învățat într-o singură problemă: avem o listă de activități, le adăugăm, le sortăm, le numărăm și le afișăm.

Exemplu: programul de activități

activitati = ["mate", "info", "romana"] activitati.adaugaLaFinal("sport") // append activitati.ordoneaza() // sort AFISEAZA activitati AFISEAZA NUMAR(activitati) // len PENTRU fiecare a din activitati: AFISEAZA a
Listă, metode, parcurgere, frecvențe
activitati = ["mate", "info", "romana"]

activitati.append("sport")
activitati.sort()
print(activitati)

print("Numar activitati:", len(activitati))

for a in activitati:
    print("-", a)

Observă: am folosit append() pentru adăugare, sort() pentru ordonare, len() pentru numărare și for pentru parcurgere. Totul combinat!

Exercițiu de completare

Completează enunțul de recapitulare cu cuvintele potrivite:

O listă este un model conceptual ______ de organizare a datelor. Stiva respectă principiul ______, iar coada principiul ______. Accesăm un element după poziția lui cu operatorul ______. Cea mai mare valoare dintr-o listă o găsim cu funcția ______().

Bancă de cuvinte:
liniar LIFO FIFO [] max

Test de înțelegere

Test rapid - recapitulare modul:

1. Care structură respectă principiul LIFO?

2. Ce metodă sortează o listă în Python?

3. O listă de frecvențe pentru valori între 0 și 100 are:

Ai grijă la: ordinea operațiilor: sortarea înainte de index() schimbă pozițiile originale, iar remove() sau pop() în timpul parcurgerii cu for poate sări peste elemente. Planifică întâi pașii, apoi scrie codul.

Aprofundare

Integrarea cunoștințelor. O problemă reală combină aproape întotdeauna mai multe noțiuni din modul: citim datele într-o listă (list(map(int, input().split()))), le prelucrăm cu parcurgeri și funcții (sum, min, max), le transformăm cu metode (sort, append, remove) și, atunci când valorile provin dintr-un interval mic, le numărăm cu o listă de frecvențe. Alege instrumentul potrivit în funcție de ce cere problema.

Ordinea operațiilor contează. Dacă sortăm lista înainte de a căuta poziția unei valori cu index(), poziția obținută nu mai este cea din datele originale. Dacă ștergem elemente cu remove() în timp ce parcurgem lista cu for, putem sări peste elemente sau să obținem erori. Gândește-te întotdeauna la efectul fiecărei metode asupra celorlalte.

Cazul listelor de tipuri diferite. O listă poate conține numere, texte sau ambele. Metodele sort() și comparațiile funcționează doar între elemente de același tip; amestecarea tipurilor produce erori la sortare. În aplicații reale (stocuri, produse, note), de regulă lucrăm cu o singură categorie de valori.

De la problemă la program. Pașii recomandați la o problemă complexă: 1) identificăm datele de intrare și modul de stocare; 2) stabilim ce informații trebuie reținute (sume, contoare, frecvențe); 3) scriem pseudocodul; 4) transpunem în Python; 5) testăm pe exemplul dat. Acest lanț reduce semnificativ numărul de erori.

Memorarea și eficiența. Listele permit reutilizarea datelor, dar ocupă memorie. Pentru un număr mare de valori, decidem între parcurgere fără memorare (când este suficientă) și cu memorare (când un calcul global decide prelucrarea elementelor). Lista de frecvențe este un compromis excelent: ocupă spațiu proporțional cu intervalul valorilor și răspunde instantaneu la întrebări de numărare.

Quiz de consolidare

Quiz de consolidare - recapitulare modul:

1. Operatorul prin care verificăm dacă o valoare există într-o listă este:

2. Metoda care adaugă un element la finalul unei liste este:

3. Parcurgerea cu memorare este necesară atunci când:

APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Elemente pozitive

Enunț:

Cerință: Se citește numărul natural n, apoi n numere întregi. Să se afișeze câte dintre ele sunt pozitive și suma acestora.

Date de intrare:

Programul citește de la tastatură numărul n, apoi pe linia următoare cele n numere, separate prin spații.

Date de ieșire:

Programul va afișa numărul de elemente pozitive și suma lor.

Restricții și precizări:

n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.

Exemplu:

Intrare:

6
5 -3 7 0 -2 8

Ieșire:

3 20
Cum gândim soluția:
  1. Citim n și numerele în lista v
  2. Parcurgem lista și, pentru fiecare x pozitiv, mărim un contor și adunăm în sumă
  3. Afișăm contorul și suma
Scrie soluția în Python:
Soluție corectă:
n = int(input())
v = list(map(int, input().split()))
cnt = 0
s = 0

for x in v:
    if x > 0:
        cnt += 1
        s += x

print(cnt, s)

Ce învățăm: parcurgem lista o singură dată și strângem, în același timp, contorul și suma elementelor pozitive.

PbInfo - Inversarea unei liste

Enunț:

Cerință: Se citește o listă de numere. Să se afișeze lista în ordine inversă, folosind metoda reverse() sau secțiunea v[::-1].

Date de intrare:

Programul citește de la tastatură numerele, separate prin spații.

Date de ieșire:

Programul va afișa numerele în ordine inversă, separate prin spații.

Restricții și precizări:

n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.

Exemplu:

Intrare:

1 2 3 4 5

Ieșire:

5 4 3 2 1
Cum gândim soluția:
  1. Citim lista v
  2. Folosim secțiunea v[::-1] pentru a o parcurge de la coadă la cap
  3. Afișăm rezultatul
Scrie soluția în Python:
Soluție corectă:
v = list(map(int, input().split()))

print(*v[::-1])

Ce învățăm: secțiunea v[::-1] parcurge lista de la ultimul element la primul. Putem folosi și v.reverse() apoi print(*v).

EXERCIȚII PRACTICE

Exercițiul Practic: Aplicație integrată și test

Sarcini de lucru

Completează următoarele sarcini pentru a-ți verifica toate cunoștințele din modul

Sarcina 1: Coșul de cumpărături

Cerință: Scrie un program care gestionează un coș de cumpărături: adaugă 4 produse citite cu append(), scoate un produs cu remove(), sortează lista cu sort(), apoi golește coșul cu clear(). Afișează lista după fiecare pas.

Soluție pentru Sarcina 1:
cos = []

cos.append("lapte")
cos.append("paine")
cos.append("mere")
cos.append("branza")
print(cos)

cos.remove("paine")
print(cos)

cos.sort()
print(cos)

cos.clear()
print(cos)

Verifică: folosim împreună metodele clasei list: append, remove, sort și clear, într-o aplicație integrată.

Sarcina 2 (TEST): Notele clasei

Cerință: Scrie un program care citește n, apoi n note. Determină media notelor (parcurgere cu memorare) și afișează notele mai mari decât media.

Soluție pentru Sarcina 2:
n = int(input())
note = list(map(int, input().split()))

media = sum(note) / len(note)
print("Media:", media)

for x in note:
    if x > media:
        print(x, end=" ")

Verifică: memorăm notele în listă, calculăm media, apoi facem a doua parcurgere pentru notele de peste medie.

Scrie pe caiet - De reținut

Titlul lecției

Ora 7: Recapitulare și test

Definiția lecției

Recapitularea leagă toate noțiunile modulului: lista ca model liniar cu acces direct după index, stiva LIFO și coada FIFO pentru ordinea de procesare, operatorii și metodele clasei list, parcurgerea cu sau fără memorare și lista de frecvențe. O problemă integrată combină mai multe dintre aceste instrumente: citim datele într-o listă, le parcurgem pentru sume și contoare, căutăm poziții și numărăm apariții. Cheia rezolvării este alegerea instrumentului potrivit întrebării din enunț și gândirea dinainte a ordinii operațiilor. Un exemplu real: gestiunea unei biblioteci școlare cere lista cărților împrumutate, numărarea împrumuturilor fiecărei cărți și ordonarea titlurilor după popularitate.

Definiții esențiale

Algoritmul cheie - pseudocod

CITESTE n CITESTE valorile in lista v v.adaugaLaFinal(x) // append v.ordoneaza() // sort AFISEAZA NUMAR(v) // len PENTRU fiecare x din v: AFISEAZA x

Algoritmul cheie - cod Python

n = int(input())
v = list(map(int, input().split()))

v.append(99)
v.sort()
print("Numar elemente:", len(v))

for x in v:
    print(x, end=" ")

Greșeli comune de evitat

Sfaturi practice și trucuri

Exemplu practic

De unde întâlnim recapitularea în viața reală? Bibliotecara ține evidența împrumuturilor din săptămână ca pe o listă de titluri. Programul numără câte împrumuturi a avut fiecare carte și le ordonează:

carti = ["Ion", "Enigma Otiliei", "Ion", "Morometii", "Ion"]
print("Apare Ion de", carti.count("Ion"), "ori")
carti.sort()
print(carti)

Programul afișează „Apare Ion de 3 ori" și lista ordonată a titlurilor împrumutate.