[英]How do you get python to print line with most words in and stop repeating print?
[英]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.