2017-09-08 1 views
1

Je veux afficher un numéro de série dans la même ligne en utilisant une boucle, voici ce que je faisais:fonctions d'impression() exécute seulement après boucle est terminée en python 3

for i in range(10): 
    sleep(1) 
    print(i, end=" ") 

Ceci est censé imprime les numéros (0, 1, 2, ..., 10) les uns après les autres à chaque itération de la boucle for, au lieu de quoi le programme attend que la boucle soit terminée et imprime tous les numéros en une fois.

Je ne comprends pas pourquoi cela se passe, est-ce que quelqu'un a une idée de ce qui cause ce comportement et merci?

Répondre

3

Votre stdout est mis en mémoire tampon; cela signifie qu'il ne montrera pas le texte jusqu'à ce qu'un retour à la ligne soit rencontré. Vous devez vider explicitement le tampon:

for i in range(10): 
    sleep(1) 
    print(i, end=" ", flush=True) 

De l'print() function documentation:

si la sortie est tamponne est généralement déterminée par fichier, mais si l'argument de mot-clé de chasse est vrai, le flux est rincé de force.

Et de sys.stdout:

Lorsque interactifs, les flux standard sont mises en mémoire tampon ligne.

+0

merci cela a parfaitement fonctionné –