Prefácio: Na verdade, esse efeito não é algo que estudei deliberadamente. A razão é que recentemente usei o ChatGPT e uma IA doméstica e descobri que a IA doméstica não tem o efeito da saída da impressora (esse efeito é um ponto melhor para mim), python encontrado acidentalmente pode fazer isso.
Sem mais delongas, vamos ao código!
impressora de console
import time
def type_out(text):
for char in text:
print(char, end='', flush=True)
time.sleep(0.5) # 打印效果延迟
type_out("Hello, World!")
Este código usa um loop for para percorrer cada caractere para enviar para o console e, ao mesmo tempo, usa flush=True
parâmetros para forçar o buffer de saída a ser atualizado, de modo a obter o efeito de saída um por um. Para tornar a saída mais realista, a função também time.sleep()
adiciona um atraso usando a função.
impressora colorida
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]")
A cor de impressão em comparação com a anterior é para definir a cor. Primeiro, os símbolos e valores básicos de cores são definidos. Em seguida, use a função iter para converter o texto de entrada em um objeto iterável text_iter e, em seguida, use a função next para obter o próximo caractere ao percorrer. Ao mesmo tempo, ao enviar o código de cores, use colors.get(color.lower(), '')
para obter a sequência de cores correspondente ao código de cores. Se o código de cores não existir, retorne uma sequência vazia para evitar erros causados por códigos de cores desconhecidos.