遍历范围向前和向后 - Python

时间:2017-04-14 00:52:09

标签: python-3.x colors range stdout

我正在编写一个使用colorama会有一些彩色文本的脚本,但我遇到了麻烦。我需要对某些颜色使用ANSI转义码,我想要一个渐变颜色。到目前为止,我可以使用 for 语句生成正向渐变:

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

然而,我无法弄清楚如何制作向后渐变。我知道在BASH脚本中我可以使用 for 语句,如下所示:

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

所以我不确定我是否需要 for 语句,或者我是否只是不了解如何为文本生成这些渐变。

1 个答案:

答案 0 :(得分: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)