2017-03-29 25 views
1

我试着写这个剧本后,对方用一秒的延迟在同一行,只是打印数量,但它不工作。末参数打印会导致不同的行为与time.sleep

防爆工作的:

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.stdout,即print默认使用流,是行缓冲(在交互模式时),如在the documentation指出:

  • 当互动,标准流线缓冲

这意味着,当用于end\n)遇到默认字符串,以flush通话将被制成。使用其他字符串(即'')不会触发flush ing,因此您必须使用flush=True强制执行此操作。

相关问题