Fonctionnement de sleep() avec print()

Résolu
Leer0r Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un problème assez simple mais qui me frustre beaucoup :
J'écris et j'exécute mon code python sous VSC, et tout marche pour le mieux. Mais quand je passe sur une console python (celle de base par exemple), j'ai un petit problème avec sleep() et print().
Petit exemple de mon problème :
from time import sleep 

for i in "coucou a tous":
    print(i)
    sleep(0.1)

Cela va bien afficher les lettres les unes en dessous des autres avec une latence de 0.1s
Mais quand je rajoute :
from time import sleep 

for i in "coucou a tous":
    print(i,end="")
    sleep(0.1)

Le mot s'affiche bien sur une ligne mais sans le délais a chaque lettre, comme si il attendais la fin pour le faire.

Quel est mon erreur ?
Merci d'avance
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, cela se passe un peu comme si l'affichage était caché jusqu'à la fin du programme?
0
Leer0r Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   1
 
oui exactement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Leer0r Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
peut-être ainsi?
import sys
import time

string = 'hello world\n'
for char in string:
    sys.stdout.write(char)
    sys.stdout.flush()
    time.sleep(.25)
0
Leer0r Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   1
 
Cela va les afficher en colonnes alors que je les veut en lignes. Mais j'ai trouvé la solution !
Il existe un paramètre de la fonction print() qui s'appelle flush, du coup avec :
from time import sleep 

for i in "coucou a tous":
    print(i,end="",flush = True)
    sleep(0.1)

J'arrive à obtenir mon résultat !
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Leer0r Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
parfait, peux-tu alors marquer comme résolu, via la roue dentée à droite du titre?
0