You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:11:53