Exerciții Practice cu Funcții
Exercițiul 1: Funcții cu Liste
Problemă: Ce afișează următorul cod?
def f(L):
L = list(set(L))
L.sort()
return L
T = [3, 1, 2, 1, 3]
r = f(T)
print(r, T)
Răspuns: [1, 2, 3] [3, 1, 2, 1, 3]
Explicație: Reatribuirea L = list(set(L)) creează un nou obiect, deci T original nu se modifică.
Exercițiul 2: Modificare în Loc
Problemă: Ce afișează?
def g(L):
L.append(4)
return L
T = [1, 2, 3]
r = g(T)
print(r, T)
Răspuns: [1, 2, 3, 4] [1, 2, 3, 4]
Explicație: append() modifică lista în loc, afectând și T.
Exercițiul 3: Parametri Impliciti
Problemă: Ce afișează?
def f(x, y=10):
return x + y
print(f(5))
print(f(5, 20))
Răspuns:
1525
Exercițiul 4: *args și **kwargs
Problemă: Scrie o funcție care acceptă orice număr de argumente și returnează suma lor.
Soluție:
def suma(*args):
return sum(args)
print(suma(1, 2)) # 3
print(suma(1, 2, 3, 4)) # 10
Exercițiul 5: Funcție Lambda
Problemă: Convertește la lambda: def triplu(x): return x * 3
Soluție:
triplu = lambda x: x * 3
print(triplu(4)) # 12
Exercițiul 6: map() cu Lambda
Problemă: Aplică funcția x**2 pe lista [1, 2, 3, 4, 5].
Soluție:
numere = [1, 2, 3, 4, 5]
patrate = list(map(lambda x: x**2, numere))
print(patrate) # [1, 4, 9, 16, 25]
# Alternativ cu comprehension
patrate = [x**2 for x in numere]
Exercițiul 7: filter()
Problemă: Filtrează numerele pozitive din [-2, -1, 0, 1, 2, 3].
Soluție:
numere = [-2, -1, 0, 1, 2, 3]
pozitive = list(filter(lambda x: x > 0, numere))
print(pozitive) # [1, 2, 3]
Exercițiul 8: Funcție Recursivă
Problemă: Scrie factorial recursiv.
Soluție:
def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120
Exercițiul 9: Scope
Problemă: Ce afișează?
x = 10
def f():
x = 20
print(x)
f()
print(x)
Răspuns:
2010
Explicație: x = 20 în funcție creează o variabilă locală.
Exercițiul 10: Global
Problemă: Modifică variabila globală din funcție.
x = 10
def f():
global x
x = 20
f()
print(x) # 20
Teste pentru Examen
-
Ce returnează
lambda x, y: x + y(3, 4)?- Răspuns:
7
- Răspuns:
-
Ce face
filter(None, lista)?- Răspuns: Elimină elementele “falsy”
-
Care e diferența între parametru și argument?
- Răspuns: Parametrul e în definiție, argumentul e la apel
-
Ce se întâmplă când modifici un parametru listă în funcție?
- Răspuns: Se modifică și originalul
-
Cum definești o funcție care acceptă număr variabil de argumente?
- Răspuns: Cu
*args
- Răspuns: Cu