Embora a função de impressão seja a primeira função padrão do Python que os iniciantes encontram, muitas pessoas realmente não a entendem. Certa vez, demonstrei algumas habilidades práticas da função de impressão no artigo "Três efeitos especiais realizados pela função Print ()" , que foi recebido com entusiasmo pelos leitores. Hoje, vou apresentar a vocês outra técnica da função de impressão: imprimir texto e padrões coloridos, e ao final definir uma função para imprimir a posição Go, você pode imprimir o efeito como na imagem abaixo.
Afinal, no modo texto, a função de impressão suporta menos cores, apenas 8 cores, conforme mostra a tabela a seguir.
Código de primeiro plano | Código de fundo | cor |
---|---|---|
30 | 40 | Preto |
31 | 41 | vermelho |
32 | 42 | verde |
33 | 43 | amarelo |
34 | 44 | azul |
35 | 45 | roxa |
36 | 46 | verde |
37 | 47 | Branco |
impressão suporta os seguintes modos de exibição:
- 0-padrão
- 1-destaque
- 4 sublinhado
- 5-piscando
- 7-reverso branco
- 8-esconder
- 22-Vá para destacar
- 24-Go underline
- 25-Deblink
- 27-Vá para destacar
- 28-vá se esconder
Ao usar a função de impressão para imprimir texto ou padrões coloridos, cada linha começa com o prefixo "\ 033 [", seguido pelo modo de exibição, cor de primeiro plano e cor de fundo, separados por ponto-e-vírgula, seguido por uma letra minúscula "m". Depois de exibir o conteúdo, geralmente termina com o sufixo "\ 033 [0m".
print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")
O efeito de exibição do código acima é mostrado na figura abaixo.
No entanto, se você estiver executando em um ambiente Windows, estima-se que esse resultado esperado não aparecerá. Eu acho que esse deve ser um bug muito estranho e difícil de resolver no Python, que tem sido o caso desde a era Py2. A solução também é muito estranha, usar a função do sistema do módulo os para executar um comando vazio quando estiver OK. código mostrado abaixo:
import os
os.system('')
print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")
Ok, depois de terminar o conhecimento de pré-requisito, é hora de imprimir uma posição Go colorida. Concordamos que a posição Go é representada por uma matriz NumPy bidimensional. Usamos 0x25cf, 0x25cb e 0x253c no conjunto de caracteres Unicode para representar preto, branco e vazio. Os cantos também usam seus símbolos correspondentes. Este símbolo pode ser exibido intuitivamente no IDLE.
>>> chr(0x25cf)
'●'
>>> chr(0x25cb)
'○'
>>> chr(0x253c)
'┼'
>>> chr(0x250c)
'┌'
>>> chr(0x2510)
'┐'
Em seguida, usando os pontos de conhecimento acima, você pode escrever uma função para imprimir a posição Go.
import numpy as np
import os
os.system('')
def show_phase(phase):
"""显示局面"""
for i in range(19):
for j in range(19):
if phase[i,j] == 1:
chessman = chr(0x25cf)
elif phase[i,j] == 2:
chessman = chr(0x25cb)
elif phase[i,j] == 9:
chessman = chr(0x2606)
else:
if i == 0:
if j == 0:
chessman = '%s '%chr(0x250c)
elif j == 18:
chessman = '%s '%chr(0x2510)
else:
chessman = '%s '%chr(0x252c)
elif i == 18:
if j == 0:
chessman = '%s '%chr(0x2514)
elif j == 18:
chessman = '%s '%chr(0x2518)
else:
chessman = '%s '%chr(0x2534)
elif j == 0:
chessman = '%s '%chr(0x251c)
elif j == 18:
chessman = '%s '%chr(0x2524)
else:
chessman = '%s '%chr(0x253c)
print('\033[0;30;43m' + chessman + '\033[0m', end='')
print()
if __name__ == '__main__':
phase = np.array([
[0,0,2,1,1,0,1,1,1,2,0,2,0,2,1,0,1,0,0],
[0,0,2,1,0,1,1,1,2,0,2,0,2,2,1,1,1,0,0],
[0,0,2,1,1,0,0,1,2,2,0,2,0,2,1,0,1,0,0],
[0,2,1,0,1,1,0,1,2,0,2,2,2,0,2,1,0,1,0],
[0,2,1,1,0,1,1,2,2,2,2,0,0,2,2,1,0,1,0],
[0,0,2,1,1,1,1,2,0,2,0,2,0,0,2,1,0,0,0],
[0,0,2,2,2,2,1,2,2,0,0,0,0,0,2,1,0,0,0],
[2,2,2,0,0,0,2,1,1,2,0,2,0,0,2,1,0,0,0],
[1,1,2,0,0,0,2,2,1,2,0,0,0,0,2,1,0,0,0],
[1,0,1,2,0,2,1,1,1,1,2,2,2,0,2,1,1,1,1],
[0,1,1,2,0,2,1,0,0,0,1,2,0,2,2,1,0,0,1],
[1,1,2,2,2,2,2,1,0,0,1,2,2,0,2,1,0,0,0],
[2,2,0,2,2,0,2,1,0,0,1,2,0,2,2,2,1,0,0],
[0,2,0,0,0,0,2,1,0,1,1,2,2,0,2,1,0,0,0],
[0,2,0,0,0,2,1,0,0,1,0,1,1,2,2,1,0,0,0],
[0,0,2,0,2,2,1,1,1,1,0,1,0,1,1,0,0,0,0],
[0,2,2,0,2,1,0,0,0,0,1,0,0,0,0,1,1,0,0],
[0,0,2,0,2,1,0,1,1,0,0,1,0,1,0,1,0,0,0],
[0,0,0,2,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0]
], dtype=np.ubyte)
show_phase(phase)