Como imprimir uma posição Go colorida usando a função de impressão padrão do Python?

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.

Insira a descrição da imagem aqui

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.
Insira a descrição da imagem aqui

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)

Acho que você gosta

Origin blog.csdn.net/xufive/article/details/112363412
Recomendado
Clasificación