上次遇到這個問題就想寫下來,其實當時我也不怎么會,老師說這個東西不需要理解,只需要死記硬背,寫的多了就記住了,所以今天搜集了幾篇文章,加上自己的理解,寫下了這篇python 輸出顏色的樣式與方法的文章,一方面想自己記錄下自己的理解,另一方面想用自己通俗的理解送給需要的盆友。
在寫python 程序代碼的時候,我們知道python 輸出的字符串顏色和一般字符相同,但是許多時候,我們需要強調某些字符,需要把其變為易於認出的顏色或者顯著的樣子。小編這里也搜集到了添加顏色的格式,
格式:"\033[字背景顏色;字體顏色m————————\033[0m" (——————表示字符串)
例如: "\033[42;37m there are ready color\033[0m"
格式:\033[顯示方式;前景色;背景色m 說明: 前景色 背景色 顏色 --------------------------------------- 30 40 黑色 31 41 紅色 32 42 綠色 33 43 黃色 34 44 藍色 35 45 紫紅色 36 46 青藍色 37 47 白色 顯示方式 意義 ------------------------- 0 終端默認設置 1 高亮顯示 4 使用下划線 5 閃爍 7 反白顯示 8 不可見 例子: \033[1;31;40m <!--1-高亮顯示 31-前景色紅色 40-背景色黑色--> \033[0m <!--采用終端默認設置,即取消顏色設置--> (這段程序是直接復制別人寫好的,感覺比我寫的好得多,而且全面)
舉個例子,這里小編寫了一個數字比大小的程序,若猜正確,則結果是正常;若猜的不正確,結果都有顏色標記,幫助你改進
_author_ = "zhanzhengrecheng" 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')
說明:如果需要增加不同前景色或者背景色的組合輸出,可以參考代碼和上述顏色編號增加。