列出随机预定义的贵重物品(不带引号)
Posted
技术标签:
【中文标题】列出随机预定义的贵重物品(不带引号)【英文标题】:make a list of random predefined valuables (without quotes) 【发布时间】:2017-01-11 17:11:36 【问题描述】:我有一个程序可以生成 64 个随机字母的列表。这些字母是预定义的变量。我想使用这个列表为我的 sensehat(树莓派)设置 ledmatrix 的像素。
我使用 set_pixels 函数。问题是列表将所有内容格式化为带有添加的单引号的字符串,而 set_pixels 函数需要一个包含 3 个值的元组来定义该像素的颜色。如果列表只包含不带引号的字母,它们将被识别为我的预定义变量,并且一切正常(我猜)。
s = SenseHat()
display = []
P = (255,0,0)
Z = (0,255,255)
for i in range(64):
x = random.choice("PZ")
display.append(x)
s.set_pixels(display)
如果我将print(display)
添加到代码中,我会得到如下内容:
['P', 'P', 'P', 'P', 'P', 'Z', 'Z', 'P', 'P', 'Z', 'Z', 'P ','Z','Z','Z','P','P','Z','P','Z','P','Z','Z','P', 'P','P','P','P','Z','P','P','P','P','Z','Z','Z','P ','P','Z','P','Z','P','P','Z','P','Z','P','Z','P', 'Z','P','P','P','P','Z','Z','Z','Z','P','Z','Z','Z ', 'P', 'P']
如果我手动添加不带引号的相同列表,set_pixels 可以正常工作。手动添加东西并不是一个真正的选择,因为列表需要随机生成。
任何想法如何以正确的方式格式化?
【问题讨论】:
只需在变量之间进行选择。x = random.choice([P, Z])
字符'P'
和'Z'
仅与locals
映射中的变量P
和Z
相关。
【参考方案1】:
我又摆弄了一下,想出了这个简单的解决方案来解决我的问题。我添加了这个 if 语句,而不是将 x 值放在我的列表中。这似乎现在有效。如果有人知道更有效的解决方案,请详细说明。
if x == "P":
display.append(P)
else:
display.append(Z)
【讨论】:
【参考方案2】:如果换行:
x = random.choice("PZ")
到
x = random.choice((P, Z))
然后它将简单地将P
替换为(255, 0, 0)
和Z 替换(0, 255, 255)
(如常量),并返回一个随机选择的颜色元组列表。
【讨论】:
以上是关于列出随机预定义的贵重物品(不带引号)的主要内容,如果未能解决你的问题,请参考以下文章