python 输出颜色与样式的方法

上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章,一方面想自己记录下自己的理解,另一方面想用自己通俗的理解送给需要的盆友。

在写python 程序代码的时候,我们知道python 输出的字符串颜色和一般字符相同,但是许多时候,我们需要强调某些字符,需要把其变为易于认出的颜色或者显著的样子。小编这里也搜集到了添加颜色的格式,

格式:"\033[字背景颜色;字体颜色m————————\033[0m"   (——————表示字符串)

例如:     "\033[42;37m there are ready color\033[0m"

格式:\033[显示方式;前景色;背景色m
 
说明:
前景色            背景色           颜色
---------------------------------------
               40              黑色
               41              红色
               42              绿色
               43              黃色
               44              蓝色
               45              紫红色
               46              青蓝色
               47              白色
显示方式           意义
-------------------------
               终端默认设置
               高亮显示
               使用下划线
               闪烁
               反白显示
               不可见
 
例子:
\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->



(这段程序是直接复制别人写好的,感觉比我写的好得多,而且全面)

举个例子,这里小编写了一个数字比大小的程序,若猜正确,则结果是正常;若猜的不正确,结果都有颜色标记,帮助你改进

'''
想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载!
'''
for i in range(4):
    number = input("input one number:")
    number = int(number)
    if number >56:
        print("\033[37;44m yes,%s确实比56大\033[0m"% number)
    elif number == 56:
        print("congratulation your input the number is true")
        break
    else:
        print('\033[34;43m no,%s比56小\033[0m'% number)
else:
    print("您的机会已经用完了")

代码结果:

input one number:49
 no,49比56小
input one number:59
 yes,59确实比56大
input one number:56
congratulation your input the number is true

 

python在cmd上打印彩色文字

  注意:只能在cmd中显示颜色,在编译器里就不行了(可能此方法只在Windows控制台有作用)

  直接介绍GetStdHandle() 和SetConsoleTextAttribute()这两个API

1,GetStdHandle()

  其作用是获取输入,输出/错误的屏幕缓冲区的句柄,函数声明如下:

HANDLE GetStdHandle(
          DWORD nStdHandle
      );

其参数nStdHandle的值为下面几种类型的一种:

STD_INPUT_HANDLE 标准输入的句柄

STD_OUTPUT_HANDLE 标准输出的句柄

STD_ERROR_HANDLE 标准错误的句柄

GetStdHandle() 返回标准的输入,输出或错误的设备的句柄,也就是获得输入,输出/错误的屏幕缓冲区的句柄。

2,SetConsoleTextAttribute()

  其作用是在控制台中设置输入或者输出文本的文字颜色和背景颜色。其函数声明如下:

BOOL SetConsoleTextAttribute(
    HANDLE hConsoleOutput,  //  console 屏幕缓冲区的句柄
    WORD wAttributes        // 文本及背景的颜色
);

文本与背景的颜色设置可以参考Windows上“color/?” 命令的说明。颜色属性是由两个十六进制数字指定———第一个为背景,第二个为前景,每个数字可以为下面任何值之一(上面也有),如下:

= 黑色       8 = 灰色

= 蓝色       9 = 淡蓝色

= 绿色       A = 淡绿色

= 浅绿色     B = 淡浅绿色

= 红色       C = 淡红色

= 紫色       D = 淡紫色

= 黄色       E = 淡黄色

= 白色       F = 亮白色

如果函数设置文本及背景颜色成功,则返回非0.如果设置失败则返回0.

prt_cmd_color.py参考代码如下:

#-*- coding:utf-8 -*-#
 
#filename: prt_cmd_color.py
 
import ctypes,sys
  
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
  
#字体颜色定义 text colors
FOREGROUND_BLUE = 0x09 # blue.
FOREGROUND_GREEN = 0x0a # green.
FOREGROUND_RED = 0x0c # red.
FOREGROUND_YELLOW = 0x0e # yellow.
  
# 背景颜色定义 background colors
BACKGROUND_YELLOW = 0xe0 # yellow.
  
# get handle
std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
  
def set_cmd_text_color(color, handle=std_out_handle):
    Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
    return Bool
  
#reset white
def resetColor():
    set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
  
#green
def printGreen(mess):
    set_cmd_text_color(FOREGROUND_GREEN)
    sys.stdout.write(mess + '\n')
    resetColor()
 
#red
def printRed(mess):
    set_cmd_text_color(FOREGROUND_RED)
    sys.stdout.write(mess + '\n')
    resetColor()
   
#yellow
def printYellow(mess):
    set_cmd_text_color(FOREGROUND_YELLOW)
    sys.stdout.write(mess + '\n')
    resetColor()
 
#white bkground and black text
def printYellowRed(mess):
    set_cmd_text_color(BACKGROUND_YELLOW | FOREGROUND_RED)
    sys.stdout.write(mess + '\n')
    resetColor()
  
  
if __name__ == '__main__':
    printGreen('printGreen:Gree Color Text')
    printRed('printRed:Red Color Text')
    printYellow('printYellow:Yellow Color Text')

说明:如果需要增加不同前景色或者背景色的组合输出,可以参考代码和上述颜色编号增加。

 

### Python 中更改控制台输出文本颜色Python 控制台中,可以通过 ANSI 转义序列来改变输出文本的颜色和其他样式。ANSI 转义序列是一种用于终端的命令集,可以用来设置字体颜色、背景色以及其他显示属性。 #### 使用 ANSI 转义序列 转义序列通常以 `\033[` 开始,后面跟着一系列参数,最后以字母 `m` 结束。为了重置所有属性并返回默认设置,可以在字符串结尾处加上 `\033[0m`[^1]。 以下是几个常见的例子: ```python print("\033[0m这是正常文本\033[0m") print("\033[1;31;40m红色加粗文字\033[0m") print("\033[4;32;40m绿色下划线文字\033[0m") print("\033[5;33;40m黄色闪烁文字\033[0m") print("\033[7;34;40m蓝色反显文字\033[0m") ``` 每条指令中的数字代表不同的效果: - 显示方式 (`1`= 加粗, `4`= 下划线, `5`= 闪烁, `7`= 反显) - 前景色 (例如 `31`= 红色, `32`= 绿色, `33`= 黄色...) - 背景色 (例如 `40`= 黑色, `41`= 红色...) #### 定义函数简化操作 为了避免每次都要手动输入复杂的转义序列,可以定义一些辅助函数来简化这个过程: ```python def colored(text, color=None, background=None, style=None): styles = { 'bold': '1', 'underline': '4', 'blink': '5', 'reverse': '7' } colors = { 'black': '30', 'red': '31', 'green': '32', 'yellow': '33', 'blue': '34', 'purple':'35', 'cyan': '36', 'white': '37' } backgrounds = {k:v.replace('3','4') for k,v in colors.items()} s = [] if style and style.lower() in styles: s.append(styles[style]) if color and color.lower() in colors: s.append(colors[color]) if background and background.lower() in backgrounds: s.append(backgrounds[background]) prefix = '\033[' + ';'.join(s) + 'm' if s else '' suffix = '\033[0m' return f"{prefix}{text}{suffix}" # 测试用法 print(colored("这是一个测试", color="red")) print(colored("带底纹的文字", color="blue", style="underline")) ``` 这种方法不仅提高了代码可读性和维护性,还使得应用不同风格变得更加直观简单[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值