[oeasy]python0083_[趣味拓展]字體樣式_正常_加亮_變暗_控制序列
字體樣式
回憶上次內(nèi)容
上次了解了 一個新的轉(zhuǎn)義模式
\033 逃逸控制字符esc
esc讓輸出
可以 清屏
也可以 設(shè)置光標輸出的位置
退出 標準輸出流
進行 控制信息的設(shè)置
還能做
什么
呢?可以 設(shè)置 字符的顏色嗎?????

查看細節(jié)
回憶
控制序列 前導符
\033[
\
是轉(zhuǎn)義字符一起 構(gòu)成轉(zhuǎn)義序列
要和 后面的內(nèi)容
\033
是轉(zhuǎn)義序列轉(zhuǎn)化含義
轉(zhuǎn)義序列
\033
對應(yīng)的 字符含義 是Escape
從標準輸出流 逃逸 出去
轉(zhuǎn)義轉(zhuǎn)義
輸出字符串時
出現(xiàn)了
Escape
后能逃去到 哪里 呢?
從 輸出的字符串中
Escape
出去后面的內(nèi)容 不是純文本了
而是 控制序列(Control Sequence)
具體控制
\033[
是CSI
Control Sequence Introducer
控制序列前導符

CSI n m
CSI
之后的是ansi給的關(guān)于字體樣式的設(shè)置細節(jié)上圖中的
n
對應(yīng)0-10的一個數(shù)字
上圖中的m 說明
選擇圖形渲染 參數(shù)
SGR (Select Graphic Rendition) parameters
這是 要進行 外觀設(shè)置
上次
用
H
控制位置這次
用
m
控制外觀具體怎么控制外觀呢?
具體設(shè)置
從1m 到10m

動手試試
1m、0m
結(jié)構(gòu)是
\033[1m
\033
是逃逸字符1 對應(yīng)著 增亮或變粗
0 對應(yīng)著 還原
m 是 固定的格式要求

好像顏色 是有點 不一樣

我可以 把\033 簡化為 \e 么?
實踐 出 真知
嘗試\e
python游樂場中不能用\e

結(jié)論
\033 可以進入 字體控制模式
\e 目前 在python中 不支持
但是 在shell中 呢?
在shell中
在shell中
echo命令 支持\e

python游樂場 中
不支持"\e"
只支持"\033"
2m

2 和 1 相反
1m 更亮
2m 更暗
0m 還原

這
一會兒亮
一會兒暗
好像 挺好玩的
編寫程序
編輯一個py文件
文件名 不能是time.py
因為 我們要引入的包 叫做time
time.py 會讓 python3 引入自己
注意
import timefor i in range(100): ? ?csi = "\033[" ? ?color = str(i % 3) ? ?print(csi + color + "moeasy") ? ?time.sleep(0.2)
i%3 是讓 i對3取余
得到0、1、2三種可能
代碼

i 從1到100
設(shè)置文字在"正常"、"亮"、"暗"中 循環(huán)
color在"0"、"1"、"2"中 循環(huán)
冷卻時間是 0.2s

規(guī)律性很強
其實 通過亮和暗
可以得到 更好玩的東西
bb
可以 看看bb 這個應(yīng)用
在shell中 安裝bb
sudo apt install bb
鍵入 bb 直接運行
實現(xiàn) 三維旋轉(zhuǎn)
bb里面 用字符畫風格

應(yīng)該是 視頻按幀 轉(zhuǎn)化過來的
很好玩!
可以 引入隨機嗎?
引入隨機
進入python游樂場
import random help random
先看看幫助文檔

random.random() 在 [0,1) 之間

random.random()*2 在 [0,2) 之間
{0,1}
(0 或者 1)
int(random.random()*2) 得到 整數(shù)
隨機翻倍
想要讓屏幕顯示
0或者1

random.random() 在 (0,1) 之間
random.random()*2 在 [0,2) 之間
再用int函數(shù)取整
(0 或 1)
得到 {0, 1}

顏色的值 可以是
{0, 1, 2}
(0 或 1 或 2)
這又應(yīng)該如何取得呢?
亂序
編輯一個py文件
time.py
random.py
注意文件名不能是
import timeimport randomwhile True: ? ?csi= "\033[" ? ?color = int(random.random()*3) ? ?num = int(random.random()*2) ? ?print(csi + str(color) + "m" + str(num),end="")
數(shù)字是
0 或 1
顏色是
亮 \33[1m
正常 \33[0m
暗 \33[2m
效果
這下確實 亂了起來??

而且是
亂了起來
毫無規(guī)律地
紛亂
亂花漸欲迷人眼 淺草才能沒馬蹄

視覺表象看起來
確實很亂
想要 總結(jié)規(guī)律
就要從視覺中抽象出來
總結(jié)
\033 xm 可以改變字體樣式
0m 復(fù)原
1m 變亮
2m 變暗
0m - 10m 之間設(shè)置的 都是字體效果

從3m到10m
又是什么效果 呢??

真的 可以讓文字 blink閃爍嗎???
我們下次再說!??
藍橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython