2016-07-15 71 views
0

我有一个python循环,每次迭代睡0.1秒。它依次将一个字符串打印到控制台。我希望它在每次迭代中都添加一个字符,但问题是它一直等到循环结束才显示文本。这只发生在打印通话结束时的“,end =''”位。python延迟循环没有新行等待,直到循环完成显示文本

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

显示您的代码,请 –

+0

冲洗参数添加到'print'功能得到它立即打印:'打印(文[I],结束=” ',flush = True)' –

回答

0

正如评论说,你在你的呼叫print(...)需要flush=True。另外,你的循环会从字符串的末尾移除一个字符(导致异常),并且在文本的末尾打印一个换行符会很不错。这里有一个固定的后续版本,我的机器上工作:

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

谢谢!我有点新来python。我非常喜欢这个社区回答问题的速度! –