2017-03-29 8 views
1

このスクリプトを書こうとすると、同じ行に1秒の遅れで数字が表示されますが、動作しません。printのend引数がtime.sleepと異なる動作につながる

EXこの作品:

from time import sleep 

for n in range(1, 11): 
    print(n) 
    sleep(1) 

しかし、これはそうではない、プログラムだけでフリーズ:これはなぜ

from time import sleep 

for n in range(1, 11): 
    print(n, end="") 
    sleep(1) 

誰も説明できますか?

+0

ops、end = ""を追加しました –

答えて

2

プログラムが凍結しない、あなただけのflush=Trueを渡すことによって、ストリームをフラッシュする必要があります。

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

sys.stdoutprintがデフォルトで使用するストリームは、ラインバッファ型(インタラクティブモードで)、などでありますthe documentationに記載されている:インタラクティブ、標準ストリームはラインバッファリングされ

これはend\n)のために使用さデフォルト文字列が検出されたとき、flushへの呼び出しが行われることを意味します。他の文字列(例:'')を使用するとflushがトリガーされないので、強制的にflush=Trueを使用する必要があります。

関連する問題