1

我有一个程序,可以在其中生成 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 工作正常。手动添加东西并不是一个真正的选择,因为列表需要随机生成。

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

4

2 回答 2

0

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

if x == "P":
  display.append(P)
else:
  display.append(Z)
于 2017-01-11T18:40:14.533 回答
0

如果您更改了行:

x = random.choice("PZ")

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

然后它将简单地替换P(255, 0, 0)Z (0, 255, 255)(如常量),并返回随机选择的颜色元组列表。

于 2017-01-11T18:50:52.027 回答