Python clasa a 9-a · Manual Python
Laborator Python
LECȚIE · CAPITOLUL 8

8.5. Parcurgerea și prelucrarea listelor – algoritmi de bază și aplicații

for, indici, acumulare, numărare, selectare și prelucrare

PARCURGE
→
ACUMULEAZĂ
→
NUMĂRĂ
→
SELECTEAZĂ
01
OBIECTIVE

La finalul lecției vei putea...

01

Parcurgerea unei liste cu for și cu indici.

Parcurgerea unei liste cu for și cu indici.

02

Calcularea sumei, produsului, minimului și ma

Calcularea sumei, produsului, minimului și maximului prin parcurgere.

03

Numărarea și selectarea elementelor care înde

Numărarea și selectarea elementelor care îndeplinesc o condiție.

04

Construirea unor liste noi pe baza unei liste

Construirea unor liste noi pe baza unei liste existente, fără a introduce încă generarea sistematică din capitolul 9.

05

Proiectarea, testarea și verificarea unor alg

Proiectarea, testarea și verificarea unor algoritmi de bază pentru liste.

✓
Checkpoint

Poți explica, în propriile cuvinte, ideea centrală a lecției?

02
EXPLICAȚIE

Parcurgerea și prelucrarea listelor – algoritmi de bază și aplicații

Am învățat să memorăm, să accesăm, să căutăm și să modificăm liste. Acum reunim aceste operații cu structurile repetitive studiate anterior.

Ce înseamnă parcurgerea?

Parcurgerea unei liste înseamnă examinarea elementelor sale, unul câte unul, pentru a realiza o prelucrare. Parcurgerea secvențială examinează fiecare element într-o ordine stabilită, de regulă de la primul la ultimul.

Două forme utile

Forma for x in L este potrivită când ne interesează valorile. Forma for i in range(len(L)) este potrivită când avem nevoie și de indice.

Modele de prelucrare

Pentru sumă folosim un acumulator inițializat cu 0. Pentru produs folosim un acumulator inițializat cu 1. Pentru minim și maxim este sigur să folosim primul element drept valoare inițială, apoi să comparăm restul elementelor.

Pentru numărare folosim un contor inițializat cu 0 și îl incrementăm atunci când condiția este adevărată. Pentru selecție construim o listă nouă și adăugăm elementele care respectă o condiție, folosind append().

03
EXEMPLU INTUITIV

Înțelegem conceptul înainte de problemă

Simulează o sumă

—

Selectează valorile pare

L=[8,3,10,5,12]

04
PYTHON

Aplicarea conceptelor în Python

Suma

L = [4, 7, 2, 9]
s = 0
for x in L:
    s = s + x
print(s)

Numărare

L = [3, 5, 8, 10, 7]
numar = 0
for x in L:
    if x >= 8:
        numar = numar + 1
print(numar)

Selectare

L = [8, 3, 10, 5, 12]
selectate = []
for x in L:
    if x % 2 == 0:
        selectate.append(x)
print(selectate)

Minim și maxim cu indici

L = [7, 4, 12, 3]
minim = L[0]
maxim = L[0]
for i in range(1, len(L)):
    if L[i] < minim:
        minim = L[i]
    if L[i] > maxim:
        maxim = L[i]
print(minim, maxim)
05
ALGORITM / PSEUDOCOD

Descrierea algoritmului înaintea implementării

ALGORITM Suma
    suma ← 0
    pentru fiecare x din L execută
        suma ← suma + x
    sfârșit pentru
    afișează suma
SFÂRȘIT ALGORITM

ALGORITM Numărare
    numar ← 0
    pentru fiecare x din L execută
        dacă x îndeplinește condiția atunci
            numar ← numar + 1
        sfârșit dacă
    sfârșit pentru
    afișează numar
SFÂRȘIT ALGORITM

ALGORITM Selectare
    S ← listă vidă
    pentru fiecare x din L execută
        dacă x îndeplinește condiția atunci
            adaugă x în S
        sfârșit dacă
    sfârșit pentru
    afișează S
SFÂRȘIT ALGORITM
06
ATENȚIE!

Erori și confuzii frecvente

  • Nu inițializa produsul cu 0.
  • Pentru minim și maxim, inițializarea cu 0 poate fi greșită când toate valorile sunt pozitive sau toate sunt negative.
  • Pentru o listă vidă nu putem folosi direct L[0]. Problemele care cer primul element trebuie să precizeze n>0 sau să trateze lista vidă.
  • Nu modifica lista în timp ce o parcurgi fără un motiv clar; pentru selecție este mai sigur să construiești o listă nouă.
  • Testarea trebuie să includă valori normale, caz-limită și cazuri particulare relevante.
07
EXEMPLU REZOLVAT

Mai multe prelucrări ale unei liste

Enunț

Se dă o listă de n numere întregi. Determinați suma elementelor pare, numărul elementelor pozitive și construiți lista elementelor mai mari decât media aritmetică. Se consideră n>0.

Analiză

Parcurgem lista pentru sumă și numărare, calculăm media, apoi realizăm o a doua parcurgere pentru selecție. Această abordare este clară și ușor de verificat.

Algoritm / pseudocod

ALGORITM Suma
    suma ← 0
    pentru fiecare x din L execută
        suma ← suma + x
    sfârșit pentru
    afișează suma
SFÂRȘIT ALGORITM

ALGORITM Numărare
    numar ← 0
    pentru fiecare x din L execută
        dacă x îndeplinește condiția atunci
            numar ← numar + 1
        sfârșit dacă
    sfârșit pentru
    afișează numar
SFÂRȘIT ALGORITM

ALGORITM Selectare
    S ← listă vidă
    pentru fiecare x din L execută
        dacă x îndeplinește condiția atunci
            adaugă x în S
        sfârșit dacă
    sfârșit pentru
    afișează S
SFÂRȘIT ALGORITM

Python

n = int(input())
L = []
for i in range(n):
    L.append(int(input()))

suma_pare = 0
numar_pozitive = 0

for x in L:
    if x % 2 == 0:
        suma_pare = suma_pare + x
    if x > 0:
        numar_pozitive = numar_pozitive + 1

media = sum(L) / n

peste_medie = []
for x in L:
    if x > media:
        peste_medie.append(x)

print("Suma numerelor pare:", suma_pare)
print("Numărul numerelor pozitive:", numar_pozitive)
print("Media:", media)
print("Peste medie:", peste_medie)

Urmărirea variabilelor

Pentru L=[4,-2,7,9,0], suma numerelor pare este 2; pozitive sunt 2; media este 3.6; lista peste medie este [4,7,9].

Testare

TestDateRezultat așteptat
Caz normal[4,-2,7,9,0]2; 2; media 3.6; [4,7,9]
Caz-limită[5]suma pare 0; pozitive 1; media 5; lista peste medie vidă
Caz particulartoate valorile negativenumărul pozitiv este 0; media este negativă

Justificarea soluției

Fiecare operație din program corespunde unei cerințe. Rezultatul poate fi controlat pornind de la lista inițială și urmărind efectul fiecărei instrucțiuni. Testele verifică atât comportamentul obișnuit, cât și situațiile relevante.

08
EXERCIȚII DE BAZĂ

Aplicare progresivă

  1. Calculează suma elementelor din [2,4,6,8].
  2. Calculează produsul elementelor din [2,3,4].
  3. Numără elementele pare din [1,2,4,7,8].
  4. Determină minimul și maximul din [9,3,12,5].
  5. Construiește lista numerelor pozitive din [-3,5,0,7,-2].
09
EXERCIȚII DE APROFUNDARE

Generalizare și cazuri-limită

  1. Determină suma elementelor divizibile cu 3 dintr-o listă.
  2. Construiește lista valorilor mai mari decât media aritmetică.
  3. Determină câte elemente au doi vecini și sunt pare, folosind indicii; tratează corect extremitățile.
  4. Pentru o listă de note, determină media, numărul notelor cel puțin egale cu 9 și lista notelor sub 5.
  5. Compară o soluție care face două parcurgeri cu una care acumulează toate informațiile posibile într-o singură parcurgere.
10
VERIFICARE

Verifică dacă ai înțeles

Întrebări conceptuale și itemi algoritmici

1. Când este potrivit for x in L?

Răspunde în caiet sau în programul tău.

2. Când folosim for i in range(len(L))?

Răspunde în caiet sau în programul tău.

3. Cu ce valoare inițializăm suma și produsul?

Răspunde în caiet sau în programul tău.

4. De ce folosim L[0] pentru inițializarea minimului?

Răspunde în caiet sau în programul tău.

5. Cum construim o listă de elemente care respectă o condiție?

Răspunde în caiet sau în programul tău.

6. Ce cazuri trebuie testate pentru un algoritm care prelucrează o listă?

Răspunde în caiet sau în programul tău.

1. Când este potrivit for x in L?

2. Cu ce inițializăm suma?

3. Cu ce inițializăm produsul?

4. Cum inițializăm sigur minimul?

5. Cum construim o listă selectată?

6. Ce trebuie inclus în testare?

11
MINI-PROIECT

Aplicație integratoare

MISIUNE

Analizor de rezultate școlare

Analizor de rezultate școlare: memorează notele unui elev, calculează media, minimul, maximul, numărul notelor cel puțin 9, numărul notelor sub 5 și construiește lista notelor care sunt peste medie. Include analiză, pseudocod, implementare Python, urmărirea variabilelor, testare și justificarea corectitudinii.

Cerințe

Concepte ale lecției01
Python corect02
Testare03
Justificarea soluției04
Documentare05

Ai terminat lecția?

Recitește obiectivele, verifică exercițiile și testează mini-proiectul.