文本模式打印彩色直方统计图


Python 官网https://www.python.org/




  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


等风来,不如追风去……


文本模式
打印彩色统计直方图
(\033[m\033[0m实现和自码工具实现)


目 录


  今天刷优快云看到大佬博文,学到了以文本的方式,打印统计直方图。喜不自胜,特在这里叨叨。🤗
  数据说明:直方图数据为random.choices()随机取样,不是真实数据,仅方便讲述“直方图”打印。


回页首

print(chr(9632))

  “■”符号来填充统计图的直方,编码为“9632”。


def demo():
    print()
    print(' 编程语言热度统计 '.center(42, '~'))
    shuffle(nums)
    data = choices(nums, k=6)
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data):
        print(f"\n{k}:{chr(9632)*i}{i:>3}")
    
    print('~'*50)

不齐整图在这里插入图片描述

  不齐整,不好看啊😱


回页首

齐整统计图


        print(f"\n{k:>10}:{chr(9632)*i}{i:>3}")

  修改打印编程语言名称字符对齐方式为右对齐。(本示例统计的编程语言名称最大最大字符数为10,所以在10的宽度内右对齐。)

整齐图
在这里插入图片描述

  没颜色,不好看……


回页首

彩色统计图

  试试加色😋


    print(f"\033[32m{chr(9632)}\033[0m"*29)
    print(f"\033[90m{chr(9632)}\033[0m"*36)
    print(f"\033[92m{chr(9632)}\033[0m"*50)

彩方条图
在这里插入图片描述

  可以有色打印彩条,修改前面的代码试试。😜😜


def demo_color():
    ''' 直方图彩条打印 '''
    print() # 打印空行。
    print(' \033[91m编程语言热度统计\033[0m '.center(51, '~')) # 高亮红色打印表题。
    shuffle(nums) # 打乱数据数组。
    data = choices(nums, k=6) # 从数据数组中随机选择6个元素。
    colors = list(range(31, 38)) + list(range(90, 98)) # 前景色编码列表。由于Python终端默认黑色背景,所以列表不含“31”黑色编码。
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data): # 遍历随机选择的6个元素。
        shuffle(colors) # 打乱前景色编码列表。
        color = choices(colors, k=1)[0] # 随机选择一个前景色。
        print(f"\n{k:>10}:\033[{color}m{chr(9632)*i}\033[0m{i:>3}") # 以随机选择的前景色打印当前遍历到的数据直方图条。
    
    print('~'*50) # 打印结束分割线。

彩条直方图
在这里插入图片描述


回页首

自码工具实现彩色统计图

  哈哈😄,实现了随机前景色的直方彩色统计图打印。
  当然,也可以用我前面自码工具mypycolor.py实现,代码更易读明了。代码如下——


from lib.mypycolor import Color
set_color = Color().set_color


def demo_color2():
    ''' 直方图彩条打印 '''
    print() # 打印空行。
    print((set_color(' 编程语言热度统计 ', 91)).center(51, '~')) # 高亮红色打印表题。
    shuffle(nums) # 打乱数据数组。
    data = choices(nums, k=6) # 从数据数组中随机选择6个元素。
    colors = list(range(31, 38)) + list(range(90, 98)) # 前景色编码列表。由于Python终端默认黑色背景,所以列表不含“31”黑色编码。
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data): # 遍历随机选择的6个元素。
        shuffle(colors) # 打乱前景色编码列表。
        color = choices(colors, k=1)[0] # 随机选择一个前景色。
        print(f"\n{k:>10}:{set_color(chr(9632)*i, color)}{i:>3}") # 以随机选择的前景色打印当前遍历到的数据直方图条。
    
    print('~'*50) # 打印结束分割线。

效果图
在这里插入图片描述


回页首

完整Python代码跳过源码

#!/sur/bin/nve python
# coding: utf-8

'''
文本模式打印统计直方图

Author:梦幻精灵_cq

date:2022-09-25
'''

from random import choices
from random import shuffle


def demo():
    print()
    print(' 编程语言热度统计 '.center(42, '~'))
    shuffle(nums)
    data = choices(nums, k=6)
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data):
        print(f"\n{k:>10}:{chr(9632)*i}{i:>3}")
    
    print('~'*50)


def demo_color():
    ''' 直方图彩条打印 '''
    print() # 打印空行。
    print(' \033[91m编程语言热度统计\033[0m '.center(51, '~')) # 高亮红色打印表题。
    shuffle(nums) # 打乱数据数组。
    data = choices(nums, k=6) # 从数据数组中随机选择6个元素。
    colors = list(range(31, 38)) + list(range(90, 98)) # 前景色编码列表。由于Python终端默认黑色背景,所以列表不含“31”黑色编码。
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data): # 遍历随机选择的6个元素。
        shuffle(colors) # 打乱前景色编码列表。
        color = choices(colors, k=1)[0] # 随机选择一个前景色。
        print(f"\n{k:>10}:\033[{color}m{chr(9632)*i}\033[0m{i:>3}") # 以随机选择的前景色打印当前遍历到的数据直方图条。
    
    print('~'*50) # 打印结束分割线。


from lib.mypycolor import Color
set_color = Color().set_color


def demo_color2():
    ''' 直方图彩条打印 '''
    print() # 打印空行。
    print((set_color(' 编程语言热度统计 ', 91)).center(51, '~')) # 高亮红色打印表题。
    shuffle(nums) # 打乱数据数组。
    data = choices(nums, k=6) # 从数据数组中随机选择6个元素。
    colors = list(range(31, 38)) + list(range(90, 98)) # 前景色编码列表。由于Python终端默认黑色背景,所以列表不含“31”黑色编码。
    
    for k,i in zip(('Python', 'C++', 'Go', 'Java', 'PhP', 'JavaScript'),data): # 遍历随机选择的6个元素。
        shuffle(colors) # 打乱前景色编码列表。
        color = choices(colors, k=1)[0] # 随机选择一个前景色。
        print(f"\n{k:>10}:{set_color(chr(9632)*i, color)}{i:>3}") # 以随机选择的前景色打印当前遍历到的数据直方图条。
    
    print('~'*50) # 打印结束分割线。


if __name__ == '__main__':
    nums = list(range(36)) # 设置随机取样范围
    demo() # 调用函数打印直方图
    demo_color() # 调用函数打印彩色直方图
    demo_color2() # 调用函数打印彩色直方图(自码工具mypycolor实现)
    print() # 打印空行


回首页

__上一篇:__ 彩色文字界面“尼姆游戏”(Python类+mypycolor工具协同打造)

__下一篇:__ 切记:Python迭代器iterator只可以读取一次,忽略会有意想不到的麻烦

我的HOT博:
推荐条件 点阅破千

回目录


老齐漫画头像

精品文章:

来源:老齐教室


回目录

Python 入门指南【Python 3.6.3】

好文力荐:

优快云实用技巧博文:


评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值