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

Ora 4: Subprograme predefinite pentru colecții

Ce vei învăța astăzi: len, min, max, sum

Rezultat practic: Utilizezi len, min, max și sum pentru analiza colecțiilor de valori (Competența 4.5).

Competența 4.5 Săptămâna 25

Înainte de a începe

De ce contează? O listă de note se rezumă în patru cifre: câte sunt (len), cea mai mică (min), cea mai mare (max) și totalul (sum), exact datele cerute la evaluare.

Ce știi deja?

În lecția trecută ai rotunjit numere cu round și ai calculat radical cu sqrt. Cum ai calcula media unei liste de numere folosind doar ce știai până acum?

Ideea-cheie: len, min, max și sum parcurg lista în locul tău: primesc colecția ca argument și întorc o singură valoare.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

Ce vei învăța astăzi?

După această lecție vei folosi funcțiile predefinite pentru colecții (grupuri de elemente, de exemplu listele): len, min, max și sum, pe liste de numere.

Numărul de elemente cu len(listă)
Minimul cu min(listă)
Maximul cu max(listă)
Suma cu sum(listă)
Aplicații: media notelor și performanța sportivilor

len, min, max și sum pe liste

len(listă) întoarce numărul de elemente. min(listă) întoarce cel mai mic element. max(listă) întoarce cel mai mare element. sum(listă) întoarce suma elementelor.

FuncțieCe faceExempluRezultat
len([2, 4, 6])Numărul de elementelen([2, 4, 6])3
min([3, 9, 5])Cel mai mic elementmin([3, 9, 5])3
max([3, 9, 5])Cel mai mare elementmax([3, 9, 5])9
sum([1, 2, 3])Suma elementelorsum([1, 2, 3])6

Media notelor cu funcții predefinite

Media aritmetică (suma elementelor împărțită la numărul lor) a elementelor unei liste se calculează simplu cu funcțiile predefinite: sum(v) / len(v).

Start program note <- [7, 9, 8, 10, 6] scrie "Numar de note:", lungime(note) scrie "Nota minima:", minim(note) scrie "Nota maxima:", maxim(note) scrie "Suma notelor:", suma(note) scrie "Media:", suma(note) / lungime(note) Stop program
Exemplu complet - analiza notelor unei clase
note = [7, 9, 8, 10, 6]

print("Numar de note:", len(note))
print("Nota minima:", min(note))
print("Nota maxima:", max(note))
print("Suma notelor:", sum(note))
print("Media:", sum(note) / len(note))

Reține: pentru medie împărțim sum(v) la len(v). Dacă vrem media cu o zecimală, putem folosi round(media, 2).

Performanța sportivilor

Dacă o listă conține scorurile obținute de sportivi, putem afla imediat cel mai bun scor cu max(), cel mai slab cu min() și media cu sum()/len().

Exemplu complet - scoruri pe liste eterogene
scoruri = [12, 15, 9, 18, 14]

print("Numar de concurenti:", len(scoruri))
print("Cel mai bun scor:", max(scoruri))
print("Cel mai slab scor:", min(scoruri))
print("Media scorurilor:", sum(scoruri) / len(scoruri))

Exercițiu de completare

Completează enunțul cu cuvintele potrivite:

Numărul de elemente dintr-o listă se află cu funcția ______(v). Cel mai mic element se află cu ______(v), iar cel mai mare cu ______(v). Pentru a aduna toate elementele folosim ______(v).

Bancă de cuvinte:
len min max sum

Test de înțelegere

Test rapid - funcții predefinite pentru colecții:

1. Care este rezultatul expresiei len([2, 4, 6])?

2. Care este rezultatul expresiei max([3, 9, 5])?

3. Care este rezultatul expresiei sum([1, 2, 3])?

Test suplimentar

Test suplimentar - funcții pentru colecții:

1. Care este rezultatul expresiei len("informatica")?

2. Care este rezultatul expresiei min([8, 3, 5])?

3. Care este rezultatul expresiei sum([2, 4, 6]) / len([2, 4, 6])?

Ai grijă la: min, max și sum pe o listă goală dau ValueError; înainte de a le aplica, verifică lista cu len.

Aprofundare

sorted() versus sort(): metoda v.sort() modifică lista existentă, pe când funcția sorted(v) întoarce o listă nouă sortată, fără să atingă originalul. Pentru ordine descrescătoare folosim reverse=True.

  • sum cu valoare inițială: sum(v, 10) începe suma de la 10 - util când adunăm peste un total existent.
  • Lista goală: min([]), max([]) și sum([]) produc ValueError; verificăm întâi cu len(v) == 0.
  • sum pe șiruri: sum(["a", "b"]) dă TypeError; șirurile se concatenează cu "".join(lista).
  • min/max pe cuvinte: pe liste de șiruri, comparația este lexicografică (ordinea din dicționar).
  • Alte metode utile: v.count(x) (de câte ori apare x), v.index(x) (prima poziție) și operatorul x in v (existența valorii).
APLICARE ȘI REZOLVARE DE PROBLEME

PbInfo - Media notelor

Enunț:

Cerință: Se citesc n note ale unui elev. Să se afișeze media aritmetică a notelor.

Date de intrare:

Programul citește de la tastatură numărul n, apoi n note, pe o singură linie.

Date de ieșire:

Programul va afișa pe ecran media aritmetică a celor n note.

Restricții și precizări:

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

Exemplu:

Intrare:

5
7 9 8 10 6

Ieșire:

8.0
Cum gândim soluția:
  1. Citim n, apoi lista de note cu map(int, input().split())
  2. Calculăm suma cu sum(v) și numărul cu len(v)
  3. Afișăm media: sum(v) / len(v)
Scrie soluția în Python:
Soluție corectă:
Soluția completă
n = int(input())
v = list(map(int, input().split()))

print(sum(v) / len(v))

Ce învățăm: media se calculează rapid cu funcțiile predefinite sum și len.

PbInfo - Minim și maxim

Enunț:

Cerință: Se dau elementele unei liste de numere. Să se afișeze minimul și maximul din listă.

Date de intrare:

Programul citește de la tastatură elementele listei, pe o singură linie.

Date de ieșire:

Programul va afișa minimul și maximul, separate printr-un spațiu.

Restricții și precizări:

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

Exemplu:

Intrare:

3 9 5 1 7

Ieșire:

1 9
Cum gândim soluția:
  1. Citim lista cu map(int, input().split())
  2. Folosim min(v) pentru minim
  3. Folosim max(v) pentru maxim și afișăm
Scrie soluția în Python:
Soluție corectă:
Soluția completă
v = list(map(int, input().split()))

print(min(v), max(v))

Ce învățăm: min și max scanează lista și întorc cel mai mic, respectiv cel mai mare element.

EXERCIȚII PRACTICE

Exercițiul Practic: Funcții predefinite pe liste

Sarcini de lucru

Aplică len, min, max și sum pe liste de numere

Sarcina 1: Performanța sportivilor

Cerință: Se dau scorurile obținute de sportivi într-o competiție. Scrie un program care citește lista de scoruri și afișează media, minimul și maximul.

Soluție:
scoruri = list(map(int, input().split()))

print("Media:", sum(scoruri) / len(scoruri))
print("Minimul:", min(scoruri))
print("Maximul:", max(scoruri))

Verifică: folosim sum, len, min și max pentru a analiza rapid întreaga listă de scoruri.

Sarcina 2: Numărul, suma și media

Cerință: Scrie un program care citește o listă de numere și afișează numărul de elemente, suma lor și media lor, folosind funcțiile predefinite.

Soluție:
v = list(map(int, input().split()))

print("Numar elemente:", len(v))
print("Suma:", sum(v))
print("Media:", sum(v) / len(v))

Verifică: o singură citire de listă este suficientă pentru a calcula toate cele trei rezultate.

Scrie pe caiet - De reținut

Titlul lecției

Subprograme predefinite pentru colecții.

Definiția lecției

Funcțiile len, min, max și sum prelucrează colecții întregi, fără bucle scrise de noi. len(listă) întoarce numărul de elemente, min(listă) cel mai mic element, max(listă) cel mai mare element, iar sum(listă) suma elementelor. Media aritmetică a unei liste se calculează ca raportul dintre sum(v) și len(v). De exemplu, pentru notele [7, 9, 8, 10, 6] obținem cinci note, minimul 6, maximul 10, suma 40 și media 8. Aceste funcții rezumă o listă întreagă în câteva valori, exact datele cerute la evaluare și în problemele cu note sau scoruri.

Definiții esențiale

Algoritmul cheie - pseudocod

Start program note <- [7, 9, 8, 10, 6] scrie "Numar de note:", lungime(note) scrie "Nota minima:", minim(note) scrie "Nota maxima:", maxim(note) scrie "Suma notelor:", suma(note) scrie "Media:", suma(note) / lungime(note) Stop program

Algoritmul cheie - cod Python

note = [7, 9, 8, 10, 6]

print("Numar de note:", len(note))
print("Nota minima:", min(note))
print("Nota maxima:", max(note))
print("Suma notelor:", sum(note))
print("Media:", sum(note) / len(note))

Greșeli comune de evitat

Exemplu practic

Un profesor adună punctajele obținute de o echipă la concursul de robotică și vrea să afle dacă media trece de pragul de calificare:

punctaje = [12, 15, 9, 18, 14]
media = sum(punctaje) / len(punctaje)
print("Media echipei:", round(media, 2))
print("Cel mai bun punctaj:", max(punctaje))

Sfaturi practice și trucuri