首页 > 其他分享 >一个 print 函数,挺会玩啊?

一个 print 函数,挺会玩啊?

时间:2024-10-07 17:49:36浏览次数:3  
标签:函数 color 40m 字体 挺会 print 033 0m

在终端中,输出的字体总是单一颜色的,黑底白字。但是在一些场景并不能很好的满足输出的需求,比如在大量而快速输出中,输出一些提示性或者警告性的信息,普通的黑底白字输出可能或起不到作用。

本文将介绍如何输出颜色字体到终端界面中。

如果你正在学习Python并且找不到方向的话可以试试我这一份学习方法+籽料呀! 点击 领取(不要米米)

# 1. ANSI 转义序列

其实终端不仅能够显示程序的输出。它可以显示移动光标、为文本着色、清除整个屏幕,并且不仅仅是静态输出。比如颜色字体或者闪烁的光标或者是进度条。

我们通过使用特殊的输出字符串改变终端的输出行为,最简单的例子便是换行这个例子:\n

# 2. 配色方案

有两种配色方案广泛应用于终端中:

  • 16 色 (8 背景 + 8 前景)前景即是字体本身的颜色

  • 255 色

 16 色

16色的配色方案包含两个颜色设置,每个8色,一个是背景色一个是字体色(也即前景色),这个配色方案的语法格式如下:

首先举一个例子 :

\033[1;32;40m

这里 \033[ 是转义字符 1 代表高亮,32 代表前景色为绿色,背景色为黑色

输出到终端则是这个效果:

 

转义字符

转义字符可以有三种形式

  • 十六进制:\x16[

  • Unicode:\u001b[

  • 八进制:\033[

样式

这个样式指的是字体的显示样式:

0(默认值)、1(高亮)、22(非粗体)

4(下划线)、24(非下划线)、 5(闪烁)

25(非闪烁)、7(反显)、27(非反显)

print('\033[0;32;40m这是一行测试字体\033[0m')
print('\033[1;32;40m这是一行测试字体\033[0m')
print('\033[22;32;40m这是一行测试字体\033[0m')
print('\033[4;32;40m这是一行测试字体\033[0m')
print('\033[24;32;40m这是一行测试字体\033[0m')
print('\033[5;32;40m这是一行测试字体\033[0m')
print('\033[25;32;40m这是一行测试字体\033[0m')
print('\033[7;32;40m这是一行测试字体\033[0m')
print('\033[27;32;40m这是一行测试字体\033[0m')

具体效果看下面的动图:

需要注意的是具体的效果可能收到使用的终端的限制,目前在CMD中输出并不会被识别,但是在window terminal中是成功的输出以上内容。

颜色设置

前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)

前景色,即字体颜色的展示:

print('\033[1;30;40m这是一行黑色测试字体\033[0m')
print('\033[1;31;40m这是一行红色测试字体\033[0m')
print('\033[1;32;40m这是一行绿色测试字体\033[0m')
print('\033[1;33;40m这是一行黄色测试字体\033[0m')
print('\033[1;34;40m这是一行蓝色测试字体\033[0m')
print('\033[1;35;40m这是一行洋红测试字体\033[0m')
print('\033[1;36;40m这是一行青色测试字体\033[0m')
print('\033[1;37;40m这是一行白色测试字体\033[0m')

背景色:

print('\033[1;37;40m这是一行黑色测试背景\033[0m')
print('\033[1;37;41m这是一行红色测试背景\033[0m')
print('\033[1;37;42m这是一行绿色测试背景\033[0m')
print('\033[1;37;43m这是一行黄色测试背景\033[0m')
print('\033[1;37;44m这是一行蓝色测试背景\033[0m')
print('\033[1;37;45m这是一行洋红测试背景\033[0m')
print('\033[1;37;46m这是一行青色测试背景\033[0m')
print('\033[1;37;47m这是一行白色测试背景\033[0m')

 

 Colorama 一个颜色输出的模块

每次输入输出都需要如此配置是非常麻烦的事,Colorama 提供方便的字体颜色输出的配置

from colorama import init, Fore, Back, Style

# Initializes Colorama
init(autoreset=True)

print(Style.BRIGHT + Back.YELLOW + Fore.RED + "from colorama import init, Fore, Back, Style

# Initializes Colorama
init(autoreset=True)

print(Style.BRIGHT + Back.YELLOW + Fore.RED + "Colorama ")")

 

 简单的变色函数

background_color_dict={
    'BLACK':40,
    'RED':41,
    'GREEN':42,
    'YELLOW':43,
    'BLUE':44,
    'MAGENTA':45,
    'CYAN':46,
    'WHITE':47
}

text_color_dict={
    'BLACK':30,
    'RED':31,
    'GREEN':32,
    'YELLOW':33,
    'BLUE':34,
    'MAGENTA':35,
    'CYAN':36,
    'WHITE':37
}

style_dict={
    'normal':0,
    'bold':1,
    'light':2,
    'italicize':3,
    'underline':4,
    'blink':5
}

def set_text_color(str_text, style, text_color, background_color):
    str = str_text
    style_code = style_dict[style]
    text_color_code = text_color_dict[text_color]
    back_color_code = background_color_dict[background_color]
    print_text = f'\033[{style_code};{text_color_code};{back_color_code}m{str}\033[0m'
    return print_text

 

 256色

256色的输出格式和16色的有点不一样

 

转义字符和上面的是一样的:

  • 十六进制:\x16[

  • Unicode:\u001b[

  • 八进制:\033[

标注显示模式则是38或者48选择一个表名后面颜色代码是前景色还是背景色。

如果想要同时修改,则使用两个这样的语句即可:

print("\033[48;5;160m\033[38;5;231m背景前景修改ABCDE \033[38;5;226m前景修改ABCDE\033[0;0m")

 

输出一下所有的前景颜色

def print_colors_256(color_code):
    num1 = str(color_code)
    num2 = str(color_code).ljust(3, ' ')
    if color_code % 16 == 0:
        return(f"\033[38;5;{num1}m {num2} \033[0;0m\n")
    else:
        return(f"\033[38;5;{num1}m {num2} \033[0;0m")

print("256 color scheme:")
print('',end=' ')
print(' '.join([print_colors_256(x) for x in range(256)]))

 

这个效果可能和你的终端输出不一致,这可能是因为我们的终端使用了不同的主题,对颜色有着不同的修改。

如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上: 【点击这里】领取!

 

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便****

标签:函数,color,40m,字体,挺会,print,033,0m
From: https://blog.csdn.net/2401_86168842/article/details/142741841

相关文章

  • 信息学奥赛复赛复习14-CSP-J2021-03网络连接-字符串处理、数据类型溢出、数据结构Map
    PDF文档公众号回复关键字:202410071P7911[CSP-J2021]网络连接[题目描述]TCP/IP协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client)。服务机负责建立连接,客户机......
  • 形函数的构造7
    形函数构造构造单元1的一般近似函数\(\overline{V(x)}^{(1)}\),由于该单元只有两个节点\(x_1\)和\(x_2\),我们选择包含两个参数\(\alpha_1\)和\(\alpha_2\)的近似方程\[\overline{V(x)}^{(1)}=\alpha_1+\alpha_2\timesx\]令试函数与\(V(x)\)在节点\(x_1\)和\(x_2\)处相等,可以......
  • Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件
    文章目录前言EcuMCommonConfigurationEcuMDriverInitListOneEcuMModuleIDEcuMModuleParameterEcuMModuleServiceEcuMRbDriverInitCoreIdEcuMDriverInitListZeroEcuMGeneralEcuMRbOnGoOffOneCalloutEcuMRbCalloutFunctionEcuMRbModuleIDEcuMRb......
  • 函数的上下文
    函数的上下文概述在函数体的语句中,会出现this这个词,this就是函数的上下文函数中this是谁,就说明函数的上下文是谁函数中的this是谁,要看是如何调用的,因为this不是一成不变的比如我们看下面的例子varobj={ a:100, fun:function(){ console.log(this.a); }};我们......
  • sort函数详解
    sort函数简介其实STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归。一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外......
  • 用自定义函数解决帝国cms的简介截取字符时出现html的问题
    帝国CMS在截取文章简介时出现HTML标签的问题可以通过自定义函数来解决。具体步骤如下:步骤1:自定义函数 NoHTML()打开 connect.php 文件找到 e/class/connect.php 文件并打开。添加自定义函数 NoHTML()在文件中添加以下函数://去除HTML标记function......
  • llama.cpp推理流程和常用函数介绍
    llama.cpp是一个高性能的CPU/GPU大语言模型推理框架,适用于消费级设备或边缘设备。开发者可以通过工具将各类开源大语言模型转换并量化成gguf格式的文件,然后通过llama.cpp实现本地推理。经过我的调研,相比较其它大模型落地方案,中小型研发企业使用llama.cpp可能是唯一的产品落地方案......
  • 在Js中匿名函数的几种写法
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • 数组和函数实践:扫雷游戏
    ⽬录1.扫雷游戏分析和设计2.扫雷游戏的代码实现3.扫雷游戏的扩展1.扫雷游戏分析和设计1.1扫雷游戏的功能说明•使⽤控制台实现经典的扫雷游戏•游戏可以通过菜单实现继续玩或者退出游戏•扫雷的棋盘是9*9的格⼦•默认随机布置10个雷•可以排查雷   ......
  • 字符函数和字符串函数和内存函数
    strtok函数原型与功能概述在C语言中,strtok函数的原型为char*strtok(char*str,constchar*delim)。它的主要功能是将字符串str按照delim中指定的分隔符进行分割,返回被分割出来的子字符串。工作原理首次调用:当第一次调用strtok时,需要将待分割的字符串str作为第一个参数传入。st......