我有一个小脚本,在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))]
,但只返回脚本正在执行的第一个元素。有什么建议?谢谢!
答案 0 :(得分:1)
感谢Steven的 random.choice()解决方案。
print(str(C(' '.join(motd)).gradient(name=random.choice(colors))))