在字符之间稍微延迟打印字符串

时间:2011-01-07 15:22:46

标签: python string

我想要显示一个文本,好像它只是被输入一样。所以每封信后我都需要一点延迟。

我试着这样做:

import time

text = "Hello, this is a test text to see if all works fine."
for char in text:
   print char,time.sleep(0.2),

除一个问题外,它工作正常。每个角色后我都会得到一个“无”。

这是输出:

H无e无l无无无o无,无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无无e无无无i无无无无无无无无无无无o无无无无无无无无无无无无无无。无

我不知道为什么会这样。我希望有人能帮助我。

8 个答案:

答案 0 :(得分:15)

>>> import time
>>> import sys
>>> blah = "This is written slowly\n"
>>> for l in blah:
...   sys.stdout.write(l)
...   sys.stdout.flush()
...   time.sleep(0.2)
...
This is written slowly

答案 1 :(得分:3)

您正在打印time.sleep(0.2)的结果,即None。将其移至下一行。

text = "Hello, this is a test text to see if all works fine."
for char in text:
    print char,
    time.sleep(0.2)

当然,您仍然遇到每个字符之间存在空格的问题,可以通过调用print替换sys.stdout.write语句来解决此问题。

text = "Hello, this is a test text to see if all works fine."
for char in text:
    sys.stdout.write(char)
    time.sleep(0.2)

答案 2 :(得分:1)

time.sleep放在一个单独的行中。使用逗号,您也可以打印其返回值。

答案 3 :(得分:1)

您正在打印time.sleep(0.2)的返回值,即无。把它放在一个单独的行上。 “print char”之后的逗号将阻止打印换行,但会在每个字符后引入一个空格。

请改为尝试:

>>> import sys
>>> import time
>>> text = "Hello, this is a test text to see if all works fine."
>>> for char in text:
...     sys.stdout.write(char)
...     time.sleep(0.2)

答案 4 :(得分:1)

您的示例将它们全部打印在我认为的单独行上(至少在Windows上)。您可以使用sys.stdout打印来解决此问题。

import time, sys
for character in text:
    sys.stdout.write(character)
    time.sleep(0.2)

答案 5 :(得分:1)

这一行:

print char, time.sleep(0.2)

解码为“打印char的值,然后打印函数time.sleep()的返回值(None)”。

您可以将它们分成不同的行,但print后跟逗号的默认行为会在您可能不想要的字符之间留下空格。如果没有,请查看如何更改print的行为,或执行以下操作:

>>> import sys
>>> import time
>>> for char in "test string\n":
...    sys.stdout.write(char)
...    time.sleep(0.2)
...
test string
>>>

答案 6 :(得分:0)

谢谢大家的帮助,这是我的最终代码,我为Wooble提到的延迟随机计时:

import time
import sys
from random import randrange

text = "This is the introduction text."

for c in text:
    sys.stdout.write(c)
    sys.stdout.flush()
    seconds = "0." + str(randrange(1, 4, 1))
    seconds = float(seconds)
    time.sleep(seconds)

答案 7 :(得分:-2)

text = "This is a test text to see if all works fine."
for char in text:
    print(char)
    time.sleep(0.2)