L'utilisation d'un générateur pour itérer les données crée un problème manquant, et le même code s'exécute avec des résultats incohérents :
Le résultat de l'exécution en mode fichier est : 5 2 1 0
Python est livré avec IDLE et le résultat est : 5 3 2 1 0
def countdown(n):
while n >= 0:
newvalue = (yield n)
if newvalue is not None:
n = newvalue
else:
n -= 1
c = countdown(5)
for n in c:
print(n)
if n == 5:
c.send(3)
Ne modifiez pas l'objet parcouru, car cela entraînerait une confusion dans l'index et ne parviendrait pas à obtenir les résultats souhaités. Vous pouvez utiliser enumerate pour afficher les modifications dans l'index pendant le processus de parcours
.