如何用Python的标准print函数打印一个彩色的围棋局面?

尽管print函数是初学者最先接触到的第一个Python标准函数,但很多人并没有真正了解它。我曾经在《用 print() 函数实现的三个特效》一文中展示了print函数的一些实用技巧,受到读者热捧。今天,我再给大家介绍print函数的另一个技巧:打印彩色文字和图案,并在最后定义一个打印围棋局面的函数,可以打印出下图这样的效果。

在这里插入图片描述

毕竟是在文本模式下,print函数支持的彩色比较少,只有8种,如下表所示。

前景代码背景代码颜色
3040
3141
3242绿
3343
3444
3545
3646
3747

print支持以下几种显示模式:

  • 0 - 默认
  • 1 - 高亮
  • 4 - 下划线
  • 5 - 闪烁
  • 7 - 反白
  • 8 - 隐藏
  • 22 - 去高亮
  • 24 - 去下划线
  • 25 - 去闪烁
  • 27 - 去反白
  • 28 - 去隐藏

使用print函数打印彩色文字或图案时,每一行以前缀“\033[”开始,其后紧跟显示模式、前景色和背景色,三者中间以分号分割,后接小写字母“m”。在显示内容之后,一般以后缀“\033[0m”结束。

print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")

上面的代码显示效果如下图所示。
在这里插入图片描述

不过,如果你是在Windows环境中运行的话,估计不会出现这个期望的结果。我猜测这应该是Python的一个非常古怪且难以解决的bug,从Py2时代就一直如此。解决方案也很奇葩,使用os模块的system函数运行一次空命令就OK了。代码如下:

import os
os.system('')

print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")

好,讲完了预备知识,是时候打印一个彩色的围棋局面了。我们约定围棋局面用一个二维的NumPy数组来表示。黑子、白子、和空,我们分别用Unicode字符集中的0x25cf、0x25cb、和0x253c来表示,边角也使用各自的对应符号。这个符号,我们可以在IDLE中直观地显示。

>>> chr(0x25cf)
'●'
>>> chr(0x25cb)
'○'
>>> chr(0x253c)
'┼'
>>> chr(0x250c)
'┌'
>>> chr(0x2510)
'┐'

接下来,应用上面这些知识点,就可以写出一个打印围棋局面的函数了。

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)
相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业正在做毕设学生与需要项目实战练习Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带源码资料可作为毕设使</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
<p> 课程演示环境:Windows10  </p> <p> 需要学习<span>Ubuntus</span>系统<span>YOLOv4-tiny</span>同学请前往《<span>YOLOv4-tiny</span>目标检测实战:训练自己数据集》 <span></span> </p> <p> <span> </span> </p> <p> <span style="color:#E53333;">YOLOv4-tiny</span><span style="color:#E53333;">来了!速度大幅提升!</span><span></span> </p> <p> <span> </span> </p> <p> <span>YOLOv4-tiny</span>在<span>COCO</span>上性能可达到:<span>40.2% AP50, 371 FPS (GTX 1080 Ti)</span>。相较于<span>YOLOv3-tiny</span>,<span>AP</span>和<span>FPS</span>性能有巨大提升。并且,<span>YOLOv4-tiny</span>权重文件只有<span>23MB</span>,适合在移动端、嵌入式设备、边缘计算设备上部署。<span></span> </p> <p> <span> </span> </p> <p> 本课程将手把手地教大家使<span>labelImg</span>标注和使<span>YOLOv4-tiny</span>训练自己数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。<span></span> </p> <p> <span> </span> </p> <p> 本课程<span>YOLOv4-tiny</span>使<span>AlexAB/darknet</span>,在<span>Windows10</span>系统上做项目演示。包括:<span>YOLOv4-tiny</span>网络结构、安装<span>YOLOv4-tiny</span>、标注自己数据集、整理自己数据集、修改配置文件、训练自己数据集、测试训练出网络模型、性能统计<span>(mAP</span>计算<span>)</span>和先验框聚类分析。 <span> </span> </p> <p> <span> </span> </p> <p> 除本课程《<span>Windows</span>版<span>YOLOv4-tiny</span>目标检测实战:训练自己数据集》外,本人推出了有关<span>YOLOv4</span>目标检测系列课程。请持续关注该系列其它视频课程,包括:<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:训练自己数据集》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:人脸口罩佩戴识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测实战:中国交通标志识别》<span></span> </p> <p> 《<span>Windows</span>版<span>YOLOv4</span>目标检测:原理与源码解析》<span></span> </p> <p> <span> <img alt="" src="https://img-bss.csdnimg.cn/202007061503586145.jpg" /></span> </p> <p> <span><img alt="" src="https://img-bss.csdnimg.cn/202007061504169339.jpg" /><br /> </span> </p>
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付 15.20元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值