如何在字母间打印一段时间? (蟒蛇)

时间:2016-04-14 02:55:41

标签: python

我在这里写的代码(我只是假设)应该在每个字母之间用一点时间打印字母,好像有人打字:

from sys import stdout
from time import sleep

def timedPrint(string, time):
    array = list(string)
    for x in array:
        stdout.write(x)
        sleep(time)

timedPrint("test")

但由于某种原因,当我调用该函数时,它会等待每个字符打印所需的时间,然后打印整个字符串(“test”)。

有没有办法按预期打印?

4 个答案:

答案 0 :(得分:1)

您需要的是在写完每个字符后刷新stdout

for x in array:
    stdout.write(x)
    stdout.flush()  # <--
    sleep(time)

答案 1 :(得分:1)

在循环中尝试sys.stdout.flush()

答案 2 :(得分:0)

顺便说一下,你的代码会返回错误,因为你只提供带有1个参数的timedPrint。它应该是

timedPrint("test",1)

每一秒打印一次。顺便说一句,如果使用命令行

运行此代码,则没有问题
python something.py

结果将是您所需要的。但是发生的事情可能是你在某个IDE或编辑器下运行它。可能会发生什么是因为你在主线程下执行sleep()函数。如果IDE也有自己的控制台渲染,则在主线程下运行的sleep()函数也可能会暂停IDE中的控制台渲染器。尝试把它放在新线程下它应该可以正常工作IDE或编辑器

答案 3 :(得分:0)

你可以这样做:

import time

def slowPrint(str, t):
  for l in str:
    print l,
    time.sleep(t)

或者这个:

import time
from sys import stdout
def slowPrint(str, t):
    for l in str:
        stdout.write(l)
        stdout.flush()
        time.wait(t)

代码未经测试但如果使用制表符而不是4个空格则应该有效;)