a = 7 b = 5 print(a + b)
Cum folosești această lecție
Nu presupunem că știi deja informatică. Pentru fiecare temă vei vedea: ce înseamnă, de ce este utilă, pașii de gândire și cel puțin trei exemple Python.
Înțelege ideea înainte de cod.
Rulează exemplele și schimbă valorile.
Încearcă să scrii singur soluția.
1. Modurile de reprezentare a algoritmilor
Un algoritm este o succesiune clară de pași prin care rezolvăm o problemă. Aceeași idee poate fi reprezentată în mai multe moduri.
1.1. Pseudocod
Pseudocodul descrie algoritmul într-o formă apropiată de limbajul natural. Nu trebuie să respecte sintaxa Python.
citește a citește b s ← a + b afișează s
1.2. Schema logică
O schemă logică folosește forme grafice pentru început, operații, decizii și rezultate.
1.3. Limbaj de programare
Python este un limbaj de nivel înalt: scriem instrucțiuni relativ apropiate de modul în care gândim problema. Un compilator traduce programul într-o formă executabilă; un interpretor execută instrucțiunile prin mecanismul specific limbajului.
a = 12
b = 20
if a > b:
print(a)
else:
print(b)s = 0
for i in range(1, 6):
s += i
print(s)2. Proiectarea modulară a algoritmilor
Modularizarea înseamnă să împărțim o problemă mare în părți mai mici. În Python, o funcție este un instrument foarte bun pentru această idee.
def salut():
print("Bun venit!")
salut()def suma(a, b):
return a + b
print(suma(3, 8))def aria_dreptunghi(l, L):
return l * L
def este_pozitiv(x):
return x > 0
print(aria_dreptunghi(4, 6))
print(este_pozitiv(10))Avantajul este că fiecare funcție poate fi înțeleasă și testată separat. Într-un program mare, acest lucru reduce confuzia și repetarea codului.
3. Testarea și depanarea
Un program care „merge” pentru un singur exemplu nu este neapărat corect. Testarea înseamnă să alegem intrări care verifică diferite situații. Depanarea înseamnă să găsim și să reparăm erorile.
Tipuri utile de teste
- caz obișnuit;
- caz de limită;
- caz neobișnuit sau invalid.
def semn(x):
if x > 0: return 1
if x < 0: return -1
return 0
print(semn(8))
print(semn(0))
print(semn(-3))def impartire(a, b):
if b == 0:
return "Nu se poate împărți la 0"
return a / b
print(impartire(10, 2))
print(impartire(10, 0))
print(impartire(-9, 3))x = 1
s = 0
for i in range(1, 4):
s = s + i
print("i =", i, "s =", s)4. Eficiența algoritmilor și notația O
Doi algoritmi pot produce același rezultat, dar unul poate face mult mai multe operații. Complexitatea ne ajută să estimăm cum crește timpul sau memoria necesară când crește dimensiunea datelor.
O(1) înseamnă aproximativ un număr constant de operații; O(n) crește proporțional cu n; O(n²) apare frecvent când avem două bucle imbricate care parcurg n elemente.
a = [10, 20, 30] print(a[0])
Accesul la un element cunoscut nu depinde de numărul total de elemente.
a = [4, 7, 2, 9, 1]
for x in a:
print(x)Parcurgem fiecare element o dată.
a = [1, 2, 3, 4]
for x in a:
for y in a:
print(x, y)Pentru fiecare element din prima buclă parcurgem din nou toate elementele.
Complexitatea memoriei descrie, la rândul ei, cât spațiu suplimentar este necesar. Un algoritm care creează o listă de n elemente are, în general, nevoie de spațiu suplimentar de ordin O(n).
5. Funcții predefinite Python pentru operații matematice și conversii
O funcție predefinită este o funcție pe care Python ne-o pune deja la dispoziție. Nu trebuie să inventăm noi algoritmul de fiecare dată. Îi oferim funcției datele de care are nevoie, iar ea ne întoarce un rezultat.
5.1. abs() – valoarea absolută
Valoarea absolută reprezintă distanța unui număr față de zero. De aceea, rezultatul este întotdeauna nenegativ.
abs(x)Ce face? Primește numărul
x și returnează valoarea lui absolută. De exemplu, abs(-8) este 8, iar abs(8) este tot 8.x = -15 print(abs(x))
Python calculează distanța lui -15 față de 0: rezultatul este 15.
a = 7 b = 12 d = abs(a - b) print(d)
Diferența este -5, dar distanța dintre 7 și 12 este 5.
temperatura = -3 print(abs(temperatura))
Obținem 3, adică distanța temperaturii față de zero.
5.2. round() – rotunjirea
Este folosită pentru a obține o valoare rotunjită. Poate primi și numărul de zecimale dorit.
round(x)round(x, ndigits)Ce face? Rotunjește
x. Dacă precizăm ndigits, acesta indică numărul de zecimale păstrate.print(round(3.14159))
Fără al doilea argument, obținem o valoare rotunjită la întreg.
print(round(3.14159, 2))
Al doilea argument este 2, deci cerem două zecimale.
media = 17 / 3 print(round(media, 3))
Calculăm media și o afișăm cu trei zecimale.
5.3. int() – conversia la întreg
Funcția int() poate transforma, în situații compatibile, un text numeric sau un număr real într-un întreg.
int(x)int(x, baza) pentru conversia unui șir reprezentând un număr într-o bază dată.Ce face? Returnează un obiect de tip
int. La conversia unui număr real, partea fracționară este eliminată, nu se face aceeași rotunjire ca la round().x = int("123")
print(x + 7)Textul "123" devine numărul întreg 123.
print(int(8.99))
Rezultatul este 8: partea fracționară este eliminată.
print(int("101", 2))Textul "101" este interpretat în baza 2 și transformat în valoarea zecimală 5.
5.4. float() – conversia la număr real
float(x)Ce face? Transformă o valoare compatibilă într-un număr real de tip
float.x = float("3.14")
print(x)a = float(7) print(a / 2)
Întregul 7 este transformat în 7.0.
pret = float(input("Preț: "))
print(pret * 1.19)Citirea este text; float o transformă în număr real pentru calcule.
5.5. sqrt() – radicalul pătrat
from math import sqrtsqrt(x)Ce face? Returnează rădăcina pătrată a lui
x. Pentru numere reale, argumentul trebuie să fie potrivit pentru această operație.from math import sqrt print(sqrt(25))
from math import sqrt a = 9 print(sqrt(a))
from math import sqrt x = 3 y = 4 ipotenuza = sqrt(x*x + y*y) print(ipotenuza)
Folosim teorema lui Pitagora și apoi radicalul.
5.6. floor() – partea întreagă inferioară
from math import floorfloor(x)Ce face? Returnează cel mai mare întreg mai mic sau egal cu
x.from math import floor print(floor(7.9))
from math import floor print(floor(7.1))
from math import floor print(floor(-2.3))
Atenție: rezultatul este -3, deoarece -3 este cel mai mare întreg ≤ -2.3.
6. Funcții predefinite pentru colecții
O colecție este o structură care conține mai multe valori. Începătorul trebuie să distingă clar între funcție și metodă: len(lista) este o funcție apelată cu o listă, în timp ce lista.sort() este o metodă a listei.
6.1. len() – numărul de elemente
len(obiect)Ce face? Returnează numărul de elemente dintr-un obiect care are o lungime, cum ar fi o listă sau un șir de caractere.
a = [4, 8, 2, 9] print(len(a))
cuvant = "Python" print(len(cuvant))
Sunt 6 caractere.
note = [8, 9, 10] media = sum(note) / len(note) print(media)
6.2. min() – cea mai mică valoare
min(iterabil)min(a, b, c, ...)Ce face? Returnează cea mai mică valoare dintre elementele date.
a = [8, 3, 12, 5] print(min(a))
print(min(14, 7, 21))
temperaturi = [4, -2, 7, 0]
rece = min(temperaturi)
print("Minim:", rece)6.3. max() – cea mai mare valoare
max(iterabil)max(a, b, c, ...)Ce face? Returnează cea mai mare valoare.
a = [8, 3, 12, 5] print(max(a))
print(max(14, 7, 21))
note = [7, 9, 10, 6]
print("Cea mai mare:", max(note))6.4. sum() – suma valorilor
sum(iterabil)sum(iterabil, start)Ce face? Adună elementele numerice ale colecției. Al doilea argument, dacă este folosit, reprezintă valoarea de la care începe suma.
a = [2, 4, 6] print(sum(a))
note = [8, 9, 7, 10] media = sum(note) / len(note) print(media)
a = [1, 2, 3] print(sum(a, 10))
Python pornește de la 10: rezultatul este 16.
sum(a) / len(a) este una dintre cele mai simple modalități de calcul al mediei aritmetice a unei liste numerice.7. Programarea orientată pe obiecte – de la zero
Programarea orientată pe obiecte (OOP) este un mod de organizare a programelor în jurul unor obiecte. Pentru un începător, cel mai important este să înțeleagă relația dintre clasă, obiect, atribut și metodă.
Elev, putem crea obiectele ana, mihai și ioana. Toate respectă modelul clasei, dar fiecare poate avea propriile date.7.1. Biblioteca și modulul
Python are biblioteci/module care conțin cod gata scris. Putem importa un modul și apoi folosi funcțiile sau clasele oferite de el.
import modulfrom modul import numeimport modul as aliasimport math print(math.sqrt(49))
from math import sqrt print(sqrt(64))
import math as m print(m.floor(4.8))
7.2. Prima clasă
class NumeClasa:instrucțiuniclass Elev:
pass
e = Elev()
print(e)pass spune că, deocamdată, clasa nu are instrucțiuni.
class Elev:
pass
ana = Elev()
mihai = Elev()
print(type(ana))
print(type(mihai))class Elev:
pass
e = Elev()
e.nume = "Ana"
e.varsta = 15
print(e.nume)
print(e.varsta)7.3. Constructorul __init__ și self
__init__ este o metodă specială apelată când construim un obiect. Parametrul self reprezintă obiectul asupra căruia lucrăm.
class Nume:def __init__(self, parametri):self.atribut = valoareclass Elev:
def __init__(self, nume):
self.nume = nume
e = Elev("Ana")
print(e.nume)class Elev:
def __init__(self, nume, varsta):
self.nume = nume
self.varsta = varsta
e = Elev("Mihai", 15)
print(e.nume, e.varsta)class Dreptunghi:
def __init__(self, l, L):
self.l = l
self.L = L
a = Dreptunghi(3, 5)
b = Dreptunghi(10, 2)
print(a.l * a.L)
print(b.l * b.L)7.4. Metodele
O metodă este o funcție definită în interiorul unei clase. Ea descrie un comportament al obiectului.
class Nume:def metoda(self, parametri):...Apel:
obiect.metoda(argumente)class Elev:
def __init__(self, nume):
self.nume = nume
def salut(self):
print("Salut,", self.nume)
e = Elev("Ana")
e.salut()class Cerc:
def __init__(self, raza):
self.raza = raza
def aria(self):
return 3.14 * self.raza ** 2
c = Cerc(2)
print(c.aria())class Cont:
def __init__(self, bani):
self.bani = bani
def depune(self, suma):
self.bani += suma
c = Cont(100)
c.depune(50)
print(c.bani)7.5. Exemplu complet – biblioteca noastră mică
Putem crea un fișier, de exemplu geometrie.py, care conține clase. Un alt program îl poate importa. Astfel vedem legătura dintre bibliotecă, clasă și obiect.
# geometrie.py
class Dreptunghi:
def __init__(self, lungime, latime):
self.lungime = lungime
self.latime = latime
def aria(self):
return self.lungime * self.latime
def perimetru(self):
return 2 * (self.lungime + self.latime)
# program.py
from geometrie import Dreptunghi
d = Dreptunghi(5, 3)
print("Aria:", d.aria())
print("Perimetrul:", d.perimetru())
Primul fișier este modulul nostru. Al doilea îl folosește. Aceasta este ideea de bază din spatele organizării codului în biblioteci și module.
8. Fișiere text în Python – de la zero
Fișierul este o formă de memorare permanentă. Dacă scriem date într-o variabilă, acestea există în timpul execuției programului. Dacă le scriem într-un fișier, le putem păstra și după ce programul se închide.
8.1. Deschiderea unui fișier
open(nume_fisier, mod)Forma recomandată:
with open(nume_fisier, mod, encoding="utf-8") as f:Parametrul mode stabilește ce vrem să facem.
"r"– citire;"w"– scriere; conținutul vechi este înlocuit;"a"– adăugare la final;"x"– creare, dacă fișierul nu există.
8.2. Scrierea cu write()
f.write(text)Ce face? Scrie textul primit în fișier. Pentru trecerea la linia următoare folosim caracterul
\n.with open("a.txt", "w", encoding="utf-8") as f:
f.write("Salut!")with open("a.txt", "w", encoding="utf-8") as f:
f.write("Linia 1\n")
f.write("Linia 2\n")nume = "Ana"
with open("elev.txt", "w", encoding="utf-8") as f:
f.write("Elev: " + nume)8.3. Citirea cu read()
continut = f.read()Ce face? Citește conținutul disponibil și îl returnează ca șir de caractere.
with open("a.txt", "r", encoding="utf-8") as f:
text = f.read()
print(text)with open("note.txt", "r", encoding="utf-8") as f:
text = f.read()
print("Lungime:", len(text))with open("a.txt", "r", encoding="utf-8") as f:
text = f.read()
if "Python" in text:
print("Cuvânt găsit")8.4. Citirea liniilor cu readline() și readlines()
f.readline() – citește o linie.f.readlines() – citește liniile și le returnează sub forma unei liste.with open("a.txt", "r", encoding="utf-8") as f:
linie = f.readline()
print(linie)with open("a.txt", "r", encoding="utf-8") as f:
linii = f.readlines()
print(linii)with open("a.txt", "r", encoding="utf-8") as f:
for linie in f:
print(linie.strip())8.5. Adăugarea cu modulul "a"
with open("fisier.txt", "a", encoding="utf-8") as f: f.write(...)Ce face? Păstrează conținutul existent și scrie date noi la final.
with open("jurnal.txt", "a", encoding="utf-8") as f:
f.write("Ziua 1\n")nume = input("Nume: ")
with open("elevi.txt", "a", encoding="utf-8") as f:
f.write(nume + "\n")mesaj = input("Mesaj: ")
with open("mesaje.txt", "a", encoding="utf-8") as f:
f.write(mesaj + "\n")8.6. De ce folosim with?
Blocul with gestionează corect închiderea fișierului după ce terminăm operațiile. Este forma recomandată pentru începători deoarece reduce riscul de a uita închiderea fișierului.
with open("x.txt", "w", encoding="utf-8") as f:
f.write("ABC")with open("x.txt", "r", encoding="utf-8") as f:
text = f.read()with open("note.txt", "r", encoding="utf-8") as f:
for linie in f:
nota = float(linie)
print(nota)9. Tkinter – interfețe grafice de la zero
Tkinter este biblioteca Python folosită pentru a construi interfețe grafice simple. Dacă în consolă utilizatorul vede text și scrie răspunsuri după input(), într-o interfață grafică utilizatorul poate avea o fereastră, butoane, etichete și casete de introducere.
9.1. Fereastra principală – Tk
import tkinter as tkroot = tk.Tk()root.title("Titlu")root.mainloop()Tk() creează fereastra principală. title() stabilește titlul. mainloop() pornește bucla de evenimente și menține fereastra activă.
import tkinter as tk
root = tk.Tk()
root.title("Prima fereastră")
root.mainloop()import tkinter as tk
root = tk.Tk()
root.geometry("500x300")
root.mainloop()Dimensiunea este 500×300 pixeli.
import tkinter as tk
root = tk.Tk()
root.title("Python")
root.geometry("600x400")
root.mainloop()9.2. Label – afișarea unui text
label = tk.Label(parent, text="mesaj")label.pack()Ce face? Creează o etichetă care afișează text.
import tkinter as tk root = tk.Tk() tk.Label(root, text="Salut!").pack() root.mainloop()
import tkinter as tk root = tk.Tk() tk.Label(root, text="Învăț Python").pack() tk.Label(root, text="Clasa a IX-a").pack() root.mainloop()
import tkinter as tk root = tk.Tk() et = tk.Label(root, text="Calcul matematic") et.pack() root.mainloop()
9.3. Button și evenimentele
Un buton devine interesant când îi asociem o acțiune. Argumentul command primește funcția care trebuie executată la apăsare.
def actiune():...tk.Button(root, text="Apasă", command=actiune).pack()Atenție: scriem
command=actiune, nu command=actiune(). În primul caz transmitem funcția; în al doilea am apela-o imediat.import tkinter as tk
root = tk.Tk()
def salut():
print("Salut!")
tk.Button(root, text="Apasă",
command=salut).pack()
root.mainloop()import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="0")
label.pack()
n = 0
def creste():
global n
n += 1
label.config(text=str(n))
tk.Button(root, text="+1",
command=creste).pack()
root.mainloop()import tkinter as tk
root = tk.Tk()
def schimba():
label.config(text="Ai apăsat butonul!")
label = tk.Label(root, text="Aștept...")
label.pack()
tk.Button(root, text="Schimbă",
command=schimba).pack()
root.mainloop()9.4. Entry – introducerea unei valori
entry = tk.Entry(parent)valoare = entry.get()Ce face?
Entry creează o casetă de text. get() citește conținutul ei ca șir de caractere.import tkinter as tk
root = tk.Tk()
e = tk.Entry(root)
e.pack()
def citeste():
print(e.get())
tk.Button(root, text="Citește",
command=citeste).pack()
root.mainloop()def calculeaza():
x = int(e.get())
print(x * 2)Reține: get() returnează text, deci îl convertim când vrem calcule numerice.
a = tk.Entry(root)
b = tk.Entry(root)
a.pack()
b.pack()
def suma():
x = float(a.get())
y = float(b.get())
print(x + y)9.5. grid(), pack() și place()
Acestea stabilesc poziția componentelor. Pentru început, este suficient să înțelegi că nu sunt funcții matematice: sunt metode de așezare în fereastră.
tk.Label(root, text="Nume").pack() tk.Entry(root).pack()
Elementele sunt așezate simplu, unul după altul.
tk.Label(root, text="Nume").grid(row=0, column=0) tk.Entry(root).grid(row=0, column=1)
Construim o organizare pe rânduri și coloane.
tk.Label(root, text="Salut").place(x=50, y=30)
Poziția este indicată prin coordonate.
9.6. Text – mai multe linii
text = tk.Text(root)continut = text.get("1.0", tk.END)Ce face?
Text permite introducerea unui text mai lung, pe mai multe linii.text = tk.Text(root) text.pack() root.mainloop()
def citeste():
continut = text.get("1.0", tk.END)
print(continut)def copiaza():
s = text.get("1.0", tk.END)
label.config(text=s)
label = tk.Label(root, text="")
label.pack()
text = tk.Text(root)
text.pack()
tk.Button(root, text="Copiază",
command=copiaza).pack()9.7. Frame – organizarea interfeței
Un Frame este un container. Putem pune mai multe componente în el și putem organiza interfața pe zone.
frame = tk.Frame(root) frame.pack() tk.Label(frame, text="În cadru").pack()
sus = tk.Frame(root) jos = tk.Frame(root) sus.pack() jos.pack() tk.Label(sus, text="Sus").pack() tk.Button(jos, text="Jos").pack()
form = tk.Frame(root) form.pack() tk.Label(form, text="Nume").grid(row=0, column=0) tk.Entry(form).grid(row=0, column=1)
9.8. messagebox – mesaje pentru utilizator
from tkinter import messageboxmessagebox.showinfo("Titlu", "Mesaj")messagebox.showerror("Titlu", "Eroare")Ce face? Afișează o fereastră de mesaj.
from tkinter import messagebox
messagebox.showinfo("Info", "Salut!")messagebox.showerror(
"Eroare",
"Valoare invalidă"
)def verifica():
if entry.get() == "":
messagebox.showerror(
"Eroare", "Completează câmpul!"
)
else:
messagebox.showinfo(
"OK", "Datele sunt completate."
)9.9. Program complet – adunarea a două numere
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title("Adunare")
root.geometry("350x220")
tk.Label(root, text="Primul număr").pack()
a = tk.Entry(root)
a.pack()
tk.Label(root, text="Al doilea număr").pack()
b = tk.Entry(root)
b.pack()
def aduna():
try:
x = float(a.get())
y = float(b.get())
messagebox.showinfo("Rezultat", str(x + y))
except ValueError:
messagebox.showerror("Eroare", "Introdu numere valide!")
tk.Button(root, text="Adună", command=aduna).pack(pady=10)
root.mainloop()
Citire pas cu pas: importăm Tkinter → creăm fereastra → creăm două Entry → definim funcția care citește valorile → convertim la float → calculăm suma → afișăm rezultatul → pornim mainloop().
9.10. Exerciții de început
- Creează o fereastră cu titlul „Calculator”.
- Adaugă trei etichete: „Nume”, „Prenume”, „Clasa”.
- Adaugă un buton care schimbă textul unui
Label. - Creează două
Entryși un buton care calculează produsul. - Creează un formular cu
grid()și afișează un mesaj dacă unul dintre câmpuri este gol.
10. Clasa list din Python – teorie și exemple
Lista este una dintre cele mai importante structuri de date din Python. Ea permite memorarea mai multor valori într-o singură variabilă. Pentru clasa a IX-a este important să înțelegem atât operațiile algoritmice asupra listelor, cât și metodele clasei list.
10.1. Crearea și indexarea
lista = [valoare1, valoare2, ...]lista[index]Indexarea începe de la 0. Dacă lista are 5 elemente, indicii sunt 0, 1, 2, 3, 4.
a = [10, 20, 30] print(a[0]) print(a[2])
a = [10, 20, 30] print(a[-1]) print(a[-2])
-1 înseamnă ultimul element.
a = [10, 20, 30] a[1] = 99 print(a)
10.2. Apartenență, concatenare și multiplicare
x in listax not in listalista1 + lista2lista * na = [2, 4, 6] print(4 in a) print(5 in a)
a = [1, 2] b = [3, 4] c = a + b print(c)
a = [0] print(a * 5)
Se obține o listă cu cinci zerouri.
10.3. append()
lista.append(x)Ce face? Adaugă un singur element la sfârșitul listei. Metoda modifică lista.
a = [1, 2] a.append(3) print(a)
a = []
for i in range(1, 4):
a.append(i)
print(a)a = [10] a.append([20, 30]) print(a)
Atenție: se adaugă lista [20, 30] ca un singur element.
10.4. insert()
lista.insert(index, x)Ce face? Inserează elementul
x înaintea poziției indicate de index.a = [10, 30] a.insert(1, 20) print(a)
a = [2, 3] a.insert(0, 1) print(a)
a = [1, 2, 3] a.insert(len(a), 4) print(a)
Inserarea la len(a) duce elementul la final.
10.5. remove() și pop()
lista.remove(x) – elimină prima apariție a valorii x.lista.pop() – elimină și returnează ultimul element.lista.pop(index) – elimină și returnează elementul de la index.a = [4, 7, 4, 9] a.remove(4) print(a)
Este eliminată prima apariție a lui 4.
a = [10, 20, 30] x = a.pop() print(x) print(a)
a = [10, 20, 30] x = a.pop(1) print(x) print(a)
10.6. index() și count()
lista.index(x) – poziția primei apariții.lista.count(x) – numărul aparițiilor.a = [5, 8, 2] print(a.index(8))
a = [2, 5, 2, 7, 2] print(a.count(2))
a = [4, 4, 7, 4] poz = a.index(4) nr = a.count(4) print(poz, nr)
10.7. copy()
noua = lista.copy()Ce face? Creează o copie superficială a listei. Pentru liste simple, este o metodă comodă de a obține o listă separată.
a = [1, 2, 3] b = a.copy() b.append(4) print(a) print(b)
note = [8, 9, 10] backup = note.copy() note[0] = 5 print(backup)
a = [4, 2, 9]
b = a.copy()
b.sort()
print("Original:", a)
print("Sortată:", b)10.8. sort()
lista.sort()lista.sort(reverse=True)Ce face? Sortează lista pe loc. Dacă vrem ordine descrescătoare, folosim
reverse=True.a = [5, 2, 9, 1] a.sort() print(a)
a = [5, 2, 9, 1] a.sort(reverse=True) print(a)
a = [3, 1, 2] rez = a.sort() print(a) print(rez)
sort() modifică lista și returnează None; nu trebuie folosit ca b = a.sort() pentru a obține o nouă listă.
10.9. Parcurgerea listelor
Parcurgerea este una dintre operațiile fundamentale: analizăm elementele unul câte unul.
a = [3, 7, 2]
for x in a:
print(x)a = [3, 7, 2]
for i in range(len(a)):
print(i, a[i])a = [2, 7, 4, 8, 3]
nr = 0
for x in a:
if x % 2 == 0:
nr += 1
print(nr)10.10. Un exemplu complet – prelucrarea unei liste
note = [7, 10, 8, 6, 9]
print("Număr:", len(note))
print("Minim:", min(note))
print("Maxim:", max(note))
print("Suma:", sum(note))
print("Media:", sum(note) / len(note))
note.sort()
print("Crescător:", note)
note.sort(reverse=True)
print("Descrescător:", note)
Acest exemplu leagă mai multe concepte: lista, len(), min(), max(), sum() și metoda sort(). După ce înțelegi fiecare instrucțiune separat, încearcă să modifici programul pentru a număra câte note sunt cel puțin 5 sau câte sunt egale cu 10.
len → append → insert → remove/pop → index/count → copy → sort → probleme de sinteză.Mini-proiect de recapitulare
Construiește un program care citește note dintr-o listă, calculează numărul de note, minimul, maximul și media, apoi salvează raportul într-un fișier.
note = [8, 9, 7, 10, 6]
nr = len(note)
minim = min(note)
maxim = max(note)
media = sum(note) / nr
raport = f"""Număr note: {nr}
Minim: {minim}
Maxim: {maxim}
Media: {media:.2f}
"""
with open("raport.txt", "w", encoding="utf-8") as f:
f.write(raport)
print(raport)
După ce îl înțelegi, încearcă să-l modifici astfel încât notele să fie citite de la tastatură și să existe verificare pentru valori invalide.
Legătura cu programa școlară
Structura acestei pagini urmărește cele 10 categorii identificate anterior în discuția noastră. Programa oficială include, între altele, subprograme, funcții predefinite, programare orientată pe obiecte, fișiere text, Tkinter și clasa list. citeturn0search13
Pentru exemplul de funcții matematice și colecții, documentația oficială include explicit exemple cu abs(), round(), int(), float(), sqrt(), respectiv len(), min(), max(), sum(). citeturn0search12
Notă: exemplele sunt concepute didactic pentru un începător și pot fi extinse ulterior cu exerciții, teste și probleme gradate.