我想使用for循环在同一行显示一个序列号,这就是我所做的:
for i in range(10):
sleep(1)
print(i, end=" ")
这应该在for循环的每次迭代中一个接一个地打印数字(0,1,2,...,10),而程序等待直到循环结束,然后打印所有数字到一旦。
我不明白为什么会发生这种情况,是否有人知道导致这种行为的原因并感谢?
答案 0 :(得分:5)
你的stdout
是行缓冲的;这意味着它不会在遇到换行符之前显示文本。您需要显式刷新缓冲区:
for i in range(10):
sleep(1)
print(i, end=" ", flush=True)
来自print()
function documentation:
输出是否缓冲通常由 file 决定,但如果 flush 关键字参数为true,则强制刷新流。
来自sys.stdout
:
交互式时,标准流是行缓冲的。