66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
def lireDroiteGauche(chaine):
|
|
'''Renvoie les caractères de chaine en commençant à droite'''
|
|
|
|
idx = 0
|
|
while idx != len(chaine):
|
|
print(f"[gen] Je rentre dans mon Yield")
|
|
valeur = (yield chaine[idx])
|
|
print(f"[gen] Je suis sorti du Yield")
|
|
if valeur != None:
|
|
print("[gen] Retour non nul, je coroutine !")
|
|
print(f"[gen] reçu: {valeur}")
|
|
else:
|
|
print("[gen] J'ai rien reçu, je génère")
|
|
idx += 1
|
|
|
|
class Tree:
|
|
|
|
def __init__(self, label, left=None, right=None):
|
|
self.label = label
|
|
self.left = left
|
|
self.right = right
|
|
|
|
def __repr__(self, level=0, indent=" "):
|
|
s = level*indent + repr(self.label)
|
|
if self.left:
|
|
s = s + "\n" + self.left.__repr__(level+1, indent)
|
|
if self.right:
|
|
s = s + "\n" + self.right.__repr__(level+1, indent)
|
|
return s
|
|
|
|
def __iter__(self):
|
|
return inorder(self)
|
|
|
|
|
|
def inorder(t):
|
|
if t:
|
|
for x in inorder(t.left):
|
|
yield x
|
|
yield t.label
|
|
for x in inorder(t.right):
|
|
yield x
|
|
|
|
def tree(list):
|
|
n = len(list)
|
|
if n == 0:
|
|
return []
|
|
i = n // 2
|
|
return Tree(list[i], tree(list[:i]), tree(list[i+1:]))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
chaine = "abcdef"
|
|
stop = "a"
|
|
print(f"On va lire '{chaine}' à l'envers")
|
|
print(f"et faire qqch au premier '{stop}' retourné")
|
|
|
|
it_chaine = lireDroiteGauche(chaine)
|
|
print(f"\n[for] Je demande un NEXT")
|
|
for lettre in it_chaine:
|
|
print(f"[for] {lettre}")
|
|
if lettre == stop:
|
|
print(f"[for] Je réclame une coro")
|
|
it_chaine.send("yolo")
|
|
print(f"[for] Je reprends le travail")
|
|
print(f"[for] Je demande un NEXT\n")
|