制作随机预定义贵重物品清单(不含引号)

时间:2017-01-11 17:11:36

标签: list python-3.x format raspberry-pi3 single-quotes

我有一个程序,我生成一个包含64个随机字母的列表。这些字母是预定义的变量。我想使用这个列表为我的感觉(raspberry Pi)设置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',& #39; Z',' Z',' P',' P',' Z',' Z&# 39;,' P',' Z',' Z',' Z',' P',&# 39; P',' Z',' P',' Z',' P',' Z&#39 ;' Z',' P',' P',' P',' P',&#39 ; P',' Z',' P',' P',' P',' P' ,' Z' Z' Z',' P',' P',' Z',' P',' Z',' P',' P',' Z', ' P',' Z',' P',' Z',' P',' Z& #39;,' P',' P',' P',' P',' Z',& #39; Z',' Z',' Z',' P',' Z',' Z&# 39;,' Z',' P',' P']

如果我手动添加没有引号的相同列表,

set_pixels工作正常。手动添加内容并不是一个选项,因为列表需要随机生成。

有任何想法如何以正确的方式格式化?

2 个答案:

答案 0 :(得分:0)

我摆弄了一点,为我的问题提出了这个简单的解决方案。我添加了这个if语句,而不是将x值放在我的列表中。这似乎现在有效。如果有人知道更有效的解决方案,请详细说明。

if x == "P":
  display.append(P)
else:
  display.append(Z)

答案 1 :(得分:0)

如果您更改了行:

x = random.choice("PZ")

x = random.choice((P, Z))

然后它只会将P替换为(255, 0, 0)而Z替换为(0, 255, 255)(类似常量),并返回随机选择的颜色元组列表。