繁体   English   中英

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

[英]How do you print words with a bit of time between letters? (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”)。

有没有办法让它按预期打印?

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

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

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

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

timedPrint("test",1)

打印每一秒。 顺便说一下,如果使用命令行运行此代码,则没有问题

python something.py

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

你可以这样做:

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个空格则应该有效;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM