2016-07-15 5 views
0

私はPythonでループを繰り返して、0.1秒ごとにスリープしています。それは順次コンソールに文字列を出力しています。文字を繰り返し追加する必要がありますが、問題はループを終了してテキストを表示するまで待つことです。これは、print呼び出しの最後に "、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を必要としています。

また、ループは文字列の末尾から1文字分だけ移動し(例外が発生します)、テキストの最後に改行を印刷するとよいでしょう。ここに私のマシン上で動作し、最大固定バージョンがあります:

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には新しいです。私はこのコミュニティが質問にどれだけ早く反応するのが大好きです! –

関連する問題