import time
a = """Hello my name is XYZ
How are you?
"""
b= list(a)
def conti(lst):
for alphabet in lst:
print(alphabet, end='')
time.sleep(0.01)
conti(b)
这样,在打印一行之后,而不是在每个字母之后,会有0.01秒的延迟。
您想要的单词是"字母";,而不是";字母表";。字母表指的是所有的字母(a-z(。
你的问题是你的打印被缓冲了。它在每个字母之后都会延迟,但直到程序结束你才能看到文本。毕竟,只有大约30个字母,所以整个过程在300毫秒内结束。
您需要在每个字母后刷新输出:
print(alphabet, end='', flush=True)
您可以使用sys.stout.write()
一次写入一个字符:
import sys
import time
a = """Hello my name is XYZ
How are you?
"""
def conti(s):
for ch in s:
sys.stdout.write(ch)
time.sleep(0.1)
conti(a)
由于您的文本包含换行符,因此代码与您的代码几乎相同。无需将其转换为列表,您可以轻松地在字符串上循环。我把延迟增加了10倍,因为它太快了,看起来不像是在打字。
正如@TimRoberts明确指出的那样:根据您的终端,文本缓冲区的刷新速度可能不够快,无法看到效果。你可以像这样强制刷新,这样它在大多数情况下都能工作:
import sys
import time
a = """Hello my name is XYZ
How are you?
"""
def conti(s):
for ch in s:
sys.stdout.write(ch)
sys.stdout.flush()
time.sleep(0.1)
conti(a)