2016-07-15 2 views
0

Ich habe eine Schleife in Python, die 0,1 Sekunden jede Iteration schläft. Es wird sequenziell eine Zeichenfolge an die Konsole ausgegeben. Ich will, dass es bei jeder Iteration ein Zeichen hinzufügt. Aber das Problem ist, dass es wartet, bis die Schleife beendet ist, um den Text anzuzeigen. Dies geschieht nur, wenn ich am Ende des Druckaufrufs das Bit ", end = ''" habe.Python verzögerte Schleife ohne neue Zeile wartet, bis Schleife beendet ist, um Text anzuzeigen

import time 

def speak(text): 
    i = 0 
    for i in range(0, len(text) + 1): 
     print(text[i], end='') 
     i += 1 
     time.sleep(0.1) 

speak("Test 123. Can you see me?") 
+0

zeigen Sie Ihren Code bitte –

+0

In den Flush Parameter an die 'print' Funktion, um es sofort zu drucken:' print (Text [i], end =‘ ', flush = True) ' –

Antwort

0

Da die Kommentare sagen, müssen Sie flush=True-print(...) in Ihren Anruf.

Auch Ihre Schleife geht ein Zeichen vom Ende der Zeichenfolge (eine Ausnahme verursacht), und es wäre nett, einen Zeilenumbruch am Ende des Textes zu drucken. Hier ist eine feste up-Version, die auf meinem Rechner funktioniert:

import time 

def speak(text): 
    for c in text + '\n': 
     print(c, end='', flush=True) 
     time.sleep(0.1) 

speak("Test 123. Can you see me?") 
+0

Danke! Ich bin etwas neu in Python. Ich mag es, wie schnell diese Gemeinschaft auf Fragen reagiert! –

Verwandte Themen