【发布时间】:2017-10-19 18:55:45
【问题描述】:
我有一个小脚本,它在 shell 登录时显示我的 MOTD,它是一个带有文本的 ASCII 图片,使用 colr 库以创建渐变的颜色渐变。我写了一个函数来随机化一个颜色列表,当我在 IDLE 中运行时,它会从列表中拉出一个随机颜色。但是,当我运行脚本时,它似乎只返回第一个元素(red)。这是我的功能:
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))],但它只返回了脚本正在执行的第一个元素。有什么建议?谢谢!
【问题讨论】:
-
为什么不使用
random.choice? -
嗯,我还在学习,对随机库还不是很熟悉。我会尝试一下,看看它是否可以纠正问题。
-
使用
o作为变量名迟早会给你带来麻烦。太像0了。
标签: python-3.x function random