【问题标题】:python delayed loop without new line waits until loop is finished to display text [duplicate]没有换行的python延迟循环等待循环完成以显示文本[重复]
【发布时间】:2016-07-15 00:37:51
【问题描述】:

我在 python 中有一个循环,每次迭代都会休眠 0.1 秒。它按顺序将字符串打印到控制台。我希望它每次迭代都添加一个字符,但问题是它要等到循环完成才能显示文本。只有当我在 print 调用结束时有“, end=''” 位时才会发生这种情况。

import time

def speak(text):
    i = 0
    for i in range(0, len(text) + 1):
        print(text[i], end='')
        i += 1
        time.sleep(0.1)

speak("Test 123. Can you see me?")

【问题讨论】:

  • 请出示您的代码
  • print 函数中添加flush 参数以使其立即打印:print(text[i], end='', flush=True)

标签: python loops


【解决方案1】:

正如 cmets 所说,您在调用 print(...) 时需要 flush=True

此外,您的循环会从字符串末尾移出一个字符(导致异常),并且最好在文本末尾打印一个换行符。这是在我的机器上工作的固定版本:

import time

def speak(text):
    for c in text + '\n':
        print(c, end='', flush=True)
        time.sleep(0.1)

speak("Test 123. Can you see me?")

【讨论】:

  • 谢谢!我对python有点陌生。我喜欢这个社区对问题的反应速度!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2012-09-30
  • 2017-02-19
  • 1970-01-01
  • 2016-11-15
  • 2017-05-03
相关资源
最近更新 更多