Exercices Fonctions & Modules Consommer un générateur manuellement
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Consommer un générateur manuellement

Tu n'es pas obligé d'utiliser un for pour consommer un générateur. Tu peux appeler next() manuellement pour récupérer les valeurs une par une. C'est utile quand tu veux juste les premières valeurs sans parcourir tout le générateur.

Quand un générateur est épuisé, next() lève StopIteration. Pour éviter cette erreur, tu peux passer une valeur par défaut : next(gen, -1) renvoie -1 si le générateur est fini.

Écris une fonction nieme_valeur(générateur, n) qui renvoie la n-ième valeur produite par un générateur (en commençant à 1). Si le générateur n'a pas assez de valeurs, renvoie None.

Exemple :
def mes_nombres():
yield 10
yield 20
yield 30

nieme_valeur(mes_nombres(), 2) renvoie 20
nieme_valeur(mes_nombres(), 5) renvoie None

Tests (3/4)

2ème valeur
def gen():
    yield 10
    yield 20
    yield 30
assert nieme_valeur(gen(), 2) == 20
1ère valeur
def gen():
    yield 'a'
    yield 'b'
assert nieme_valeur(gen(), 1) == 'a'
Au-delà du générateur
def gen():
    yield 1
assert nieme_valeur(gen(), 5) is None

+ 0 tests cachés

Indices (3 disponibles)

solution.py