Défi
Énoncé
Créer une classe Fibonacci qui implémente le protocole d'itération Python : __iter__ renvoie self et __next__ produit le terme suivant de la suite de Fibonacci sans jamais lever StopIteration (itérateur infini). La suite commence par 0, 1, 1, 2, 3, 5, …. Utiliser itertools.islice pour extraire les 10 premiers termes et les afficher sur une seule ligne séparés par des espaces.
Contraintes
- Python ≥ 3.6.
__iter__doit renvoyerself.__next__ne lève jamaisStopIteration(l'itérateur est infini par conception).- Extraction des N premiers termes obligatoirement via
itertools.islice(pas de boucleforavec compteur). - Bibliothèque standard uniquement (
itertools). - Sortie : les 10 premiers termes sur une ligne, séparés par un espace.
Exemple
import itertools
class Fibonacci:
def __init__(self):
self.a, self.b = 0, 1
def __iter__(self):
return self
def __next__(self):
valeur = self.a
self.a, self.b = self.b, self.a + self.b
return valeur
premiers = list(itertools.islice(Fibonacci(), 10))
print(*premiers)
0 1 1 2 3 5 8 13 21 34