Python实现字符逐次延迟打印:解决批量输出问题
解决逐字打印缓冲问题,实现Undertale式打字效果
嘿,我懂你想要的那种逐字蹦出的感觉——Undertale里NPC说话的打字感确实很有氛围!先看看你代码里的两个小问题,咱们一步步搞定:
先修正代码里的小bug
你在text函数里写了put(p),但这里应该是put(c)啊!不然每次循环打印的是整个片段p,而不是单个字符c,这肯定没法实现逐字输出。
核心问题:输出缓冲区在“偷懒”
Python的标准输出默认是行缓冲机制——也就是说,只有当输出内容包含换行符\n,或者缓冲区被填满时,才会把内容显示到终端。你用了print(char, end=''),没有触发换行,所以所有字符都被暂时存在缓冲区里,等循环结束才一次性全部输出。
解决办法很简单:每次打印字符后,手动刷新输出缓冲区就行。
修正后的完整代码
import time import sys # 导入sys模块用于刷新缓冲区 wait = time.sleep def put(char): print(char, end='') sys.stdout.flush() # 每次打印后立刻刷新缓冲区,让字符马上显示 def text(*pieces): for p in pieces: for c in p: put(c) # 这里改成put(c),打印单个字符 wait(0.25) # 测试效果 text("Hello, ", "this is the Undertale-style typing effect!")
如果你觉得导入sys模块麻烦,也可以直接给print函数加flush=True参数,代码会更简洁:
import time wait = time.sleep def put(char): print(char, end='', flush=True) # 直接用flush=True参数刷新缓冲区 def text(*pieces): for p in pieces: for c in p: put(c) wait(0.25) # 测试效果 text("Wow, ", "this works just as well!")
效果说明
这样修改后,每个字符都会在调用put后立刻显示出来,然后等待250毫秒再打印下一个,完美还原你想要的逐字打字效果~
内容的提问来源于stack exchange,提问作者user8963906
相关产品推荐
相关产品推荐

