前言:这个效果其实不是我刻意去研究的,起因在于最近使用ChatGPT与一款国产的AI,发现国产的AI没有打印机输出的效果(这种效果自我感觉是一个比较好的点),无意中发现python可以做。
话不多说,上代码!
控制台打印机
import time
def type_out(text):
for char in text:
print(char, end='', flush=True)
time.sleep(0.5) # 打印效果延迟
type_out("Hello, World!")
这段代码使用了一个for循环遍历每个字符输出到控制台,同时使用flush=True
参数强制刷新输出缓冲区,从而实现逐个输出的效果。为了使输出效果更加逼真,函数还使用time.sleep()
函数添加延迟。
彩色打印机
import time
def type_out(text):
colors = {
'red': '\033[91m', 'green': '\033[92m', 'yellow': '\033[93m', 'blue': '\033[94m'}
end_color = '\033[0m'
text_iter = iter(text)
for char in text_iter:
if char == '[': # 遇到'['时开始设置颜色
color = ''
while True:
char = next(text_iter)
if char == ']': # 遇到']'时停止设置颜色
break
color += char
print(colors.get(color.lower(), ''), end='', flush=True)
elif char == ']':
print(end_color, end='', flush=True)
else:
print(char, end='', flush=True)
time.sleep(0.2)
type_out("Hello, [red]World![yellow] This is a [blue]test![end]")
打印彩色与上面的相比在于定义颜色。首先定义了基本颜色符号和值。接着使用iter函数将输入文本转化为一个可迭代对象text_iter,然后在遍历时使用next函数获取下一个字符。同时,在输出颜色代码时,使用colors.get(color.lower(), '')
来获取颜色代码对应的颜色字符串,如果颜色代码不存在则返回一个空字符串,避免出现未知颜色代码导致的错误。