randcolor()函数没有随机化 - python

时间:2017-05-19 15:11:35

标签: python-3.x function random

我有一个小脚本,在shell登录时显示我的MOTD,这是一张带文字的ASCII图片,使用 colr 库以颜色渐变来创建渐变。我写了一个函数来随机化一个颜色列表,当我在IDLE中运行它将从列表中拉出一个随机颜色。但是,当我运行脚本时,它似乎只返回第一个元素(红色)。这是我的功能:

from random import randint
from colr import Colr as C
def randcolor():
        colors = ['red', 'blue', 'green', 'cyan', 'orange']
        n = (len(colors))
        o = randint(0, n-1)
        color = colors[o]
        return color

所以当在IDLE中运行时,结果如下:

>>> randcolor()
'red'
>>> randcolor()
'red'
>>> randcolor()
'green'
>>> randcolor()
'cyan'
>>> randcolor()
'green'
>>> randcolor()
'red'
>>> randcolor()
'orange'
>>> randcolor()
'green'

但是当我在我的脚本中实现它时,似乎只返回第一个元素:

f = open('/etc/motd', 'r')
    motd = f.readlines()
    f.close()

print(str(C(' '.join(motd)).gradient(name=randcolor()))

我无法在此处添加脚本中的结果,但可以说它不会更改渐变。出了什么问题?

此外,我想知道这是否可以作为 lambda 来完成。我试图只分配一个变量:color = colors[(randint(0, len(colors)-1))],但只返回脚本正在执行的第一个元素。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:1)

感谢Steven的 random.choice()解决方案。

print(str(C(' '.join(motd)).gradient(name=random.choice(colors))))