只有在python 3

时间:2017-09-08 11:48:25

标签: python-3.x loops printing

我想使用for循环在同一行显示一个序列号,这就是我所做的:

for i in range(10):
    sleep(1)
    print(i, end=" ")

这应该在for循环的每次迭代中一个接一个地打印数字(0,1,2,...,10),而程序等待直到循环结束,然后打印所有数字到一旦。

我不明白为什么会发生这种情况,是否有人知道导致这种行为的原因并感谢?

1 个答案:

答案 0 :(得分:5)

你的stdout是行缓冲的;这意味着它不会在遇到换行符之前显示文本。您需要显式刷新缓冲区:

for i in range(10):
    sleep(1)
    print(i, end=" ", flush=True)

来自print() function documentation

  

输出是否缓冲通常由 file 决定,但如果 flush 关键字参数为true,则强制刷新流。

来自sys.stdout

  

交互式时,标准流是行缓冲的。