Exercices Fonctions & Modules Générateur infini
🎉

Bravo!

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

Générateur infini

Un des grands avantages des générateurs, c'est qu'ils peuvent produire une séquence infinie. Comme les valeurs sont calculées à la demande, le générateur ne plante pas : il attend simplement qu'on lui demande la prochaine valeur.

Bien sûr, tu ne peux pas faire list() sur un générateur infini (ça tournerait pour toujours). Mais tu peux utiliser next() pour récupérer les valeurs une par une, ou combiner avec un autre mécanisme pour n'en prendre qu'un certain nombre.

Un while True dans un générateur ne bloque pas le programme : le yield met la fonction en pause entre chaque valeur.

Écris un générateur infini cycle(éléments) qui répète indéfiniment les éléments d'une liste. Quand il arrive au bout de la liste, il recommence au début.

Exemple :
gen = cycle([1, 2, 3])
Les 7 premières valeurs : 1, 2, 3, 1, 2, 3, 1

Tests (3/4)

7 premiers du cycle
gen = cycle([1, 2, 3])
result = [next(gen) for _ in range(7)]
assert result == [1, 2, 3, 1, 2, 3, 1]
Cycle d'un seul élément
gen = cycle(['a'])
assert [next(gen) for _ in range(3)] == ['a', 'a', 'a']
Cycle de deux
gen = cycle([True, False])
assert [next(gen) for _ in range(4)] == [True, False, True, False]

+ 0 tests cachés

Indices (3 disponibles)

solution.py