使用Python 3在for循环中将sleep()和print()插值到同一行

5
我试图使用python 3在同一行打印循环的结果,在阅读了Python: for loop - print on the same line后成功实现。
for x in range(1,10):
    print(x, end="")

现在的问题是当我插入

时,
time.sleep(2)

在打印之前,我想先打印第一个字符,等待两秒钟,然后打印第二个字符,再等待两秒钟,以此类推。

以下是代码:

for x in range(1,10):
    time.sleep(2)
    print(x, end="")

这样做的话,我们需要等待20秒钟(= 10 * 2),然后才能显示数字。这不是我们期望的结果。

为了实现上述期望的行为,即等待2秒钟,打印第一个字符,再等待2秒钟,打印第二个字符等等,我应该怎么做呢?


此外还可以在这里查看另一个重复项[http://stackoverflow.com/questions/38411532/how-do-i-print-from-a-python-2-7-script-invoked-from-bash-within-pycharm/38411633]。 - TigerhawkT3
1个回答

5

输出到 stdout 的缓冲区是按行缓冲的,这意味着缓冲区直到打印换行符时才会被刷新。

每次打印时都显式地刷新缓冲区:

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

演示:

演示动画,以2秒间隔缓慢添加数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接