上下文:在Raspberrypi上运行的python代码为某些WS2801 RGB LED动画。要设置LED的颜色,您需要定义R,G和B数字值。我已经设置了一些调色板来存储可以很好地协同工作的RGB颜色范围,我想从该调色板中随机选择。
我将这些调色板存储为两个列表(列表在这里被截断了,以简洁起见):
xmascolours = [
(0, 137, 42),
(243, 243, 243),
]
halloweencolours = [
(21, 24, 24),
(49, 49, 49),
]
然后我想从这些列表之一中随机选择。如果我只是这样做:
colour = random.choice(xmascolours)
这很好。但是为了保持代码清晰(因为我定期将这些值随机化以使LED显示一系列颜色),我想将当前使用的调色板存储在另一个变量中,所以我只需要更改一次该值,然后我叫的所有地方都是random.choice。因此,我尝试这样做:
palette = 'xmascolours'
colour = random.choice(palette)
但是这似乎将颜色设置为单词调色板中随机选择的字符!显然我做错了。有没有办法做到这一点?
答案 0 :(得分:0)
我建议使用列表字典。这样,您可以按调色板名称加载所需的调色板列表。
import random
colorScheme = {}
colorScheme["xmascolours"] = [(0, 137, 42),(243, 243, 243)]
colorScheme["halloweencolours"] = [(21, 24, 24),(21, 24, 24)]
import pprint
print("Collection of colorSchemes:")
# You do not have to use pprint it just makes the list output look nice
pprint.pprint(colorScheme)
palette = colorScheme["xmascolours"]
print("All colors from xmascolors palette:")
print(palette)
colour = random.choice(palette)
print("Random color from palette:")
print(colour)
输出
Collection of colorSchemes:
{'xmascolours': [(0, 137, 42), (243, 243, 243)], 'halloweencolours': [(21, 24, 24), (21, 24, 24)]}
All colors from xmascolors palette:
[(0, 137, 42), (243, 243, 243)]
Random color from palette:
(0, 137, 42)