为什么time.sleep()同时发生而不是一次发生一个



我正在尝试制作一个小动画类型的东西,它打印R,然后等待.5秒,o,然后等待0.5秒,以此类推,直到结束。这是我写的代码:

import time
def rolling():
print('R', end = '')
time.sleep(.5)
print('o', end = '')
time.sleep(.5)
print('l', end = '')
time.sleep(.5)
print('l', end = '')
time.sleep(.5)
print('i', end = '')
time.sleep(.5)
print('n', end = '')
time.sleep(.5)
print('g', end = '')
time.sleep(.5)

当我运行它时,它会等待3.5秒,然后打印整个单词。有什么建议吗?

程序的输出是行缓冲的(在任何常见场景中都是这样(,因此,由于您没有打印任何换行符(n(,因此结果只在执行结束时一次性写入控制台。

为了确保每次对print()的调用都能立即产生输出,您可以添加flush=True(感谢pink spikeyhairman指出这一点,在编写原始答案时我并不知道该功能(:

import time
def rolling():
print('R', end = '', flush=True)
time.sleep(.5)
print('o', end = '', flush=True)
time.sleep(.5)

您甚至可以直接使用sys.stdout.write().flush()

import time
import sys
def rolling():
sys.stdout.write('R')
sys.stdout.flush()
time.sleep(.5)
sys.stdout.write('R')
sys.stdout.flush()
time.sleep(.5)
# ...

相关内容

  • 没有找到相关文章

最新更新