🐍

Exerciții Practice cu Funcții

Programare Python Intermediate 1 min read 0 words

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:

  • 15
  • 25

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:

  • 20
  • 10

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

  1. Ce returnează lambda x, y: x + y(3, 4)?

    • Răspuns: 7
  2. Ce face filter(None, lista)?

    • Răspuns: Elimină elementele “falsy”
  3. Care e diferența între parametru și argument?

    • Răspuns: Parametrul e în definiție, argumentul e la apel
  4. Ce se întâmplă când modifici un parametru listă în funcție?

    • Răspuns: Se modifică și originalul
  5. Cum definești o funcție care acceptă număr variabil de argumente?

    • Răspuns: Cu *args

📚 Related Articles