2017-10-13 6 views
1

Je souhaite imprimer lentement les caractères d'une chaîne sur le terminal sur la même ligne à l'aide de python3. J'ai utilisé ce code.Impression lente à l'aide de la fonction time.sleep

for i in "Hello": 
    print(i,end='') 
    time.sleep(0.2) 

ce code attend 0,2 * 5 (len de « Bonjour ») secondes et imprime tous les caractères à once.when-je utiliser la fonction sys.stdout.write() au lieu de la fonction d'impression, elle imprime les caractères ligne par ligne au lieu de la même ligne. Comment puis-je imprimer des caractères sur la même ligne avec un délai?

Répondre

3
import sys 
import time 

for c in "Hello": 
    sys.stdout.write(c) 
    sys.stdout.flush() # <- add this 
    time.sleep(0.2) 

Ou utilisez le paramètre flush dans le python 3 print fonction

print(c, end='', flush=True) 
+0

Il ne fait aucune différence, il imprime encore chaque char nouvelle ligne. J'utilise Ubuntu est-ce pourquoi cela ne fonctionne pas? –

+0

Cela devrait fonctionner, pouvez-vous copier exactement le même code que vous utilisez? –

+0

J'ai copié votre code le sys.stdout.flush() n'a eu aucun effet mais vider dans la fonction d'impression travaillée. –