<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個 print 函數(shù),挺會玩???

          共 4683字,需瀏覽 10分鐘

           ·

          2022-07-31 06:20

          在終端中,輸出的字體總是單一顏色的,黑底白字。但是在一些場景并不能很好的滿足輸出的需求,比如在大量而快速輸出中,輸出一些提示性或者警告性的信息,普通的黑底白字輸出可能或起不到作用。

          本文將介紹如何輸出顏色字體到終端界面中。

          # 1. ANSI 轉(zhuǎn)義序列

          其實(shí)終端不僅能夠顯示程序的輸出。它可以顯示移動光標(biāo)、為文本著色、清除整個屏幕,并且不僅僅是靜態(tài)輸出。比如顏色字體或者閃爍的光標(biāo)或者是進(jìn)度條。

          我們通過使用特殊的輸出字符串改變終端的輸出行為,最簡單的例子便是換行這個例子:\n

          # 2. 配色方案

          有兩種配色方案廣泛應(yīng)用于終端中:

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

          • 255 色

           16 色

          16色的配色方案包含兩個顏色設(shè)置,每個8色,一個是背景色一個是字體色(也即前景色),這個配色方案的語法格式如下:

          首先舉一個例子 :

          \033[1;32;40m

          這里 \033[ 是轉(zhuǎn)義字符 1 代表高亮,32 代表前景色為綠色,背景色為黑色

          輸出到終端則是這個效果:

          轉(zhuǎn)義字符

          轉(zhuǎn)義字符可以有三種形式

          • 十六進(jìn)制:\x16[

          • Unicode:\u001b[

          • 八進(jìn)制:\033[

          樣式

          這個樣式指的是字體的顯示樣式:

          0(默認(rèn)值)、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中是成功的輸出以上內(nèi)容。

          顏色設(shè)置

          前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋 紅)、36(青色)、37(白色)
          背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍(lán)色)、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這是一行藍(lán)色測試字體\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這是一行藍(lán)色測試背景\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 ")")

           簡單的變色函數(shù)

          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色的有點(diǎn)不一樣

          轉(zhuǎn)義字符和上面的是一樣的:

          • 十六進(jìn)制:\x16[

          • Unicode:\u001b[

          • 八進(jìn)制:\033[

          標(biāo)注顯示模式則是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}{num2} \033[0;0m\n")
              else:
                  return(f"\033[38;5;{num1}{num2} \033[0;0m")

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

          這個效果可能和你的終端輸出不一致,這可能是因?yàn)槲覀兊慕K端使用了不同的主題,對顏色有著不同的修改。


          作者:HOLL4ND

          原文鏈接:https://www.kleinlam.space/%E5%8D%9A%E5%AE%A2/python/python-%E7%BB%88%E7%AB%AF%E8%BE%93%E5%87%BA%E9%A2%9C%E8%89%B2%E5%AD%97%E4%BD%93/

          瀏覽 43
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  奇米一区二区三区 | 亚洲大鸡吧 | 色婷婷在线观看视频 | 大香蕉伊人在钱 | 国产一级aa |