这是一个Raspberry Pi Sense Hat项目。我将发布下面的代码但是它应该做什么:
感应帽是8x8 LED的网格(虽然我在屏幕上使用数字仿真器版本)我已经编写了一个骰子滚动程序,到目前为止我已经编码了6个数字,我让它们闪烁/播放一个动画(模拟滚动效果)我现在想添加一个random.choice()来在结尾随机显示6个数字中的一个。
我的问题:我所知道的方法只适用于一个非常简单的列表,例如:
mylist = ['choiceA', 'choiceB', 'choiceC']
并使用:
print(random.choice(mylist))
我的版本没有引号,因为我不想打印' choiceA'因为它写在列表中,所以choiceA是一个包含更多代码的变量。
我将发布整个程序,以便您可以准确地看到我在做什么...如果这里的问题有点冗长,请致歉,并且它可能不是我学习的最专业的编码方法困难的方式......由我自己
注意:最后一行代码是我对我认为它如何工作的想法。评论如下:
from sense_emu import SenseHat
import random
import time
sense = SenseHat()
b = [0,255,255]
w = [255,255,255]
# Number 1
imageA = [
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w
]
# Number 2
imageB = [
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w
]
# Number 3
imageC = [
w,w,w,w,w,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w
]
# Number 4
imageD = [
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w,
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w
]
# Number 5
imageE = [
b,b,w,w,w,w,b,b,
b,b,w,w,w,w,b,b,
w,w,w,w,w,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,b,b,w,w,w,
w,w,w,w,w,w,w,w,
b,b,w,w,w,w,b,b,
b,b,w,w,w,w,b,b
]
# Number 6
imageF = [
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w,
w,w,w,w,w,w,w,w,
w,b,b,w,w,b,b,w,
w,b,b,w,w,b,b,w]
diceList = [imageA, imageB, imageC, imageD, imageE, imageF]
while True:
for image in diceList:
sense.set_pixels(image)
time.sleep(0.1)
#sense.set_pixels(random.choice(dicelist))
如果我取消评论最后一行,动画仍然继续播放,它不会显示我的随机选择
注意:此代码将在sensehat模拟器网站上运行,但导入ID略有不同(我从Raspbian OS运行我的模拟器):
如果您确实想在网站上试用,我99%肯定您需要编辑第一个导入到此:
from sense_hat import SenseHat
答案 0 :(得分:1)
只是做:
while True:
sense.set_pixels(random.choice(dicelist))
time.sleep(0.1)
没有for循环
修改强>
根据我的理解,你想先显示一个6面的动画,然后在投掷时显示一面。
使用带random.choice
的for循环显示随机动画:
for i in range(6):
sense.set_pixels(random.choice(dicelist))
time.sleep(0.1)
如果您希望动画以随机顺序显示所有6个边(而不是6个随机边),请使用np.random.permutation
my_permutation = np.random.permutation(6)
for i in my_permutation:
sense.set_pixels(dicelist[i])
time.sleep(0.1)
答案 1 :(得分:0)
除非我误解了这个问题,否则你只需要列表中的随机元素。这很简单:
xticks