Python 官网:https://www.python.org/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
今天刷CSDN看到大佬博文,学到了以文本的方式,打印统计直方图。喜不自胜,特在这里叨叨。🤗
数据说明:直方图数据为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() # 打印空行
来源:老齐教室
全栈领域优质创作者——寒佬(还是国内某高校学生)好文:《非技术文—关于英语和如何正确的提问》,“英语”和“会提问”是学习的两大利器。