Fonctionnement de sleep() avec print()

Résolu/Fermé
Leer0r Messages postés 41 Date d'inscription vendredi 22 décembre 2017 Statut Membre Dernière intervention 16 avril 2020 - 12 juil. 2019 à 00:22
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 - 16 juil. 2019 à 16:43
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 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
12 juil. 2019 à 10:51
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 vendredi 22 décembre 2017 Statut Membre Dernière intervention 16 avril 2020 1
16 juil. 2019 à 10:20
oui exactement
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554 > Leer0r Messages postés 41 Date d'inscription vendredi 22 décembre 2017 Statut Membre Dernière intervention 16 avril 2020
16 juil. 2019 à 10:26
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 vendredi 22 décembre 2017 Statut Membre Dernière intervention 16 avril 2020 1
16 juil. 2019 à 16:34
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 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554 > Leer0r Messages postés 41 Date d'inscription vendredi 22 décembre 2017 Statut Membre Dernière intervention 16 avril 2020
16 juil. 2019 à 16:43
parfait, peux-tu alors marquer comme résolu, via la roue dentée à droite du titre?
0