time.sleep 不适用于范围或列表中的每个项目[重复]

Posted

技术标签:

【中文标题】time.sleep 不适用于范围或列表中的每个项目[重复]【英文标题】:time.sleep not working per item in range or list [duplicate] 【发布时间】:2020-12-21 16:56:57 【问题描述】:

我正在尝试编写这样的代码

def no(t=.001):
    print("N", end='')
    for i in range(1000):
        print('o', end='')
        time.sleep(t)
    print()

所以当我打电话给no() 时,我会打印一个很长的“Nooooo...”,在每个“o”之间等待一段时间。 相反,函数会在整个总时间(默认参数为 1 秒)内停止,然后打印整个列表。 这是故意的吗?如果不是,我应该如何获得预期的效果?

【问题讨论】:

print(..., flush=True) 【参考方案1】:

这里发生的情况是,python 实际上以与您想要的完全相同的方式打印所有字符 - 它每秒将 N 写入标准输出,然后将 o 写入标准输出。问题是操作系统没有显示它,因为文件(stdout 是一个文件)没有被刷新。这通常会在打印 \n 时自动发生(默认情况下,在打印字符串的末尾),但您会用 end=='' 覆盖它。

幸运的是,print 有一个可选的flush 参数,您可以使用它来强制刷新。因此,您应该能够通过以下方式解决您的行为:

def no(t=.001):
    print("N", end='', flush=True)
    for i in range(1000):
        print('o', end='', flush=True)
        time.sleep(t)
    print()

【讨论】:

以上是关于time.sleep 不适用于范围或列表中的每个项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

onClick 事件不适用于 android 中的嵌套列表视图项控件

数据库中的待办事项列表项更新不适用于 Django

谷歌表格中的条件格式不适用于重复项

更准确的 time.sleep 用于 Python 3 中的短(毫秒)延迟? [复制]

用于检查值是否在列表中不适用于集合的逻辑

Android onItemClick 方法不适用于 0 以外的 id 项