Python逐字符打印函数优化:解决特殊字符与换行保留问题
解决方法
你的原函数存在两个核心问题:
- 末尾的
print未执行调用(Python3中需写成print()才会触发换行),导致调用函数后不会自动换行; - 特殊字符显示问题并非函数本身的缺陷,Python3默认支持Unicode字符(包括撇号、连字符等),但我们可以优化函数确保兼容性,同时保留原文本的换行格式。
修改后的基础版函数
import sys import time def slow(text, delay=0.02): for c in text: sys.stdout.write(c) sys.stdout.flush() time.sleep(delay) # 调用print()实现每次调用后的自动换行 print() # 测试包含特殊字符和换行的文本 slow("Hello! I'm a text game character—let's test line breaks.\nThis is a new line.")
针对长文本的优化版(可选)
如果是较长的游戏文本,可以在标点或换行处增加停顿,提升阅读体验:
import sys import time def slow(text, delay=0.02, pause_delay=0.5): # 定义需要延长停顿的字符 pause_chars = {'.', '!', '?', '\n'} for c in text: sys.stdout.write(c) sys.stdout.flush() # 遇到标点或换行时用更长的停顿时间 time.sleep(pause_delay if c in pause_chars else delay) print()
修改后效果:
- 所有Unicode字符(包括撇号、连字符、中文等)均可正常显示
- 每次调用
slow()后自动换行 - 原文本中的
\n换行符会被完整保留并输出 - 长文本在标点处的停顿更符合自然阅读节奏
内容的提问来源于stack exchange,提问作者Nolan__
相关产品推荐
相关产品推荐

