2017-04-14 110 views
1

我正在寫一個腳本,將使用colorama一些彩色文本,但我碰到了一個障礙。我需要爲某些顏色使用ANSI轉義代碼,並且我想要漸變顏色。遍歷範圍向前和向後 - Python

for i in range(22, 27): print(\e[35;5;i + "some text")

但我無法弄清楚如何使向後傾斜:到目前爲止,我可以通過使用聲明產生正向梯度。我知道在bash腳本我可以使用聲明是這樣的:

for i in {22..28} {27..21} ; do echo -en "\e[35;5;${i}m \e[0m" ; done ; echo

將產生我在尋找的結果。我可以在Python中以相同的方式遍歷範圍嗎?我試過

for i in range(22, 28) (28,21,-1)

但是,這只是給了一個錯誤。我對Python仍然很陌生,所以我不確定我的語法是錯誤的還是我應該嘗試一些不同的東西。

編輯澄清

,我想實現將類似於這樣的效果: Gradient,但文本和不同的顏色。我可以製作暗光漸變,但不能在字符串中間反轉以形成明暗漸變。

更新

所以我能夠實現我一直在尋找的效果但是它產生的所有顏色的漸變,而不是藍色。我用COLR庫來實現這一目標:

from colr import Colr as C print(c(' '.join(out)).gradient(name='blue'))

產生這樣的輸出:

bashwxplus image

所以我不知道如果我甚至需要陳述或如果我只是不理解如何產生文本的這些漸變。

回答

0

原諒我,如果我誤解你的問題,但你只是意味着反向的範圍順序,就像這樣:

for i in range(22,27): #forward 
    print("\e[35;5;%dm \e[0m" % i) 

for i in reversed(range(22,27)): #backward 
    print("\e[35;5;%dm \e[0m" % i) 

編輯

如果你想讓它從大量的去 - >低 - >高,都在一條線,你可以這樣做:

my_range = list(reversed(range(22,27))) + list(range(22,27)) 
for i in my_range: 
    print("\e[35;5;%dm \e[0m" % i) 
+0

是的,這將返回我正在尋找的結果,但我需要兩個** **對於聲明中一個〜應變克,(我認爲)。我編輯了OP,添加了我想要製作的效果圖片。 –

+0

我覺得現在有道理 - 看我的編輯。這是你想要的? – qbzenker

+0

是的,這正是我正在尋找的!我再次更新OP來添加我正在嘗試執行的操作以及我已經實現的用於生成漸變的屏幕截圖。我會將你的建議插入我的腳本並更新。感謝幫助! –