"""une boucle donne acces a une liste et offre les fonctionnalites supplementaires suivantes: position actuelle, suivant, precedent, avancer de n ou de -n de plus, si on depasse le dernier element, on revient au premier (et vice-versa)""" class Boucle(): def __init__(self, liste = []): self._tours = 0 self._pos = 0 self._liste = [] def liste(self): return self._liste def majListe(self, liste): self._liste = liste def position(self): return self._pos def majPosition(self, pos): self._pos = pos while self._pos > len(self._liste): self._pos -= len(self._liste) self._tours += 1 while self._pos < 0: self._pos += len(self._liste) self._tours -= 1 def actuel(self): return self._liste[self._pos] def suivant(self): self.avancer(1) def precedent(self): self.avancer(-1) def avancer(self, n): self.majPosition((self._pos + n)) def nbTours(self): return self._tours def premier(self): return self._liste[0] def dernier(self): return self._liste[len(self._liste)-1]