2016-08-26 3 views
5

Ich habe versucht, das Ergebnis einer Schleife in der gleichen Zeile mit Python 3 zu drucken und nach dem Lesen Python: for loop - print on the same line habe ich es geschafft.Interpolieren Sie sleep() und print() in der gleichen Zeile innerhalb einer for-Schleife mit python 3

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

Das Problem ist jetzt, wenn ich

time.sleep(2) 

vor dem Druck ein. Ich möchte das erste Zeichen, warten zwei Sekunden drucken, dann die zweite, Sekunden warten zwei usw.

Hier ist der Code:

for x in range(1,10): 
    time.sleep(2) 
    print(x, end="") 

Damit wir warten Sie 20 Sekunden (= 10 * 2) und nur dann werden die Nummern angezeigt. Das erwarten wir nicht.

Was kann ich tun das oben erwartete Verhalten haben, nämlich 2 Sekunden warten, erstes Zeichen drucken, weitere 2 Sekunden warten, zweite Zeichen drucken, usw.

+0

Auch ein anderes Duplikat siehe [hier] (http://stackoverflow.com/questions/38411532/ how-do-i-print-from-a-python-2-7-script-aufgerufen von-bash-in-pycharm/38411633). – TigerhawkT3

Antwort

5

Ausgabe auf stdout wird Zeile gepuffert, der die Puffereinrichtung wird nicht gelöscht, bis ein Zeilenumbruch gedruckt wird.

Explizit spülen Sie den Puffer bei jedem Druck:

print(x, end="", flush=True) 

Demo:

demonstration animation showing slowly-added digits at 2 second intervals

+0

Ich denke, es ist wichtig hinzuzufügen, dass der erste Buchstabe von True wirklich mit Großbuchstaben geschrieben werden kann. ;-) –

Verwandte Themen