Python游戏开场打字机效果异常:列表调用时无法逐字符输出
打字机文本输出问题修复
你的代码问题出在multi=True分支里——直接一次性输出整个列表元素,没有对每个元素做逐字符的打字机处理,导致无法实现预期的缓慢输出效果。
修复方案是把逐字符输出的逻辑抽成可复用的内部函数,在处理列表时,对每个元素单独执行逐字符输出:
import sys from time import sleep test_list = ['obj 1', 'obj 2'] def writer(text, multi=True): # 处理单段文本的逐字符打字机输出 def type_single(segment): for char in segment: sleep(0.05) sys.stdout.write(char) sys.stdout.flush() sys.stdout.write('\n') # 每段输出完换行,可根据需求调整 sys.stdout.flush() if multi: for item in text: type_single(item) sleep(1) # 元素之间的停顿时间 else: type_single(text) writer(test_list)
说明
- 内部函数
type_single负责单段文本的逐字符输出,避免重复代码,逻辑更清晰。 - 遍历列表时,每个元素都会被逐字符打印,元素之间保留1秒停顿,符合开场动画的节奏需求。
- 移除了原代码中多余的
obj索引变量,直接用for item in text遍历元素更简洁。
内容的提问来源于stack exchange,提问作者Tokyn Blast
相关产品推荐
相关产品推荐

