2

我试图找到一个干净的解决方案来在 python 中实现一个基本的决策矩阵。我有 8 个传感器监控安装,根据这 8 个传感器的状态,我需要激活一些继电器。

我的决策矩阵看起来像(S 是传感器,R 是 R):

S1   S2   S3   S4   S5   S6   S7   S8   R1   R2   R3
0    1    0    0    1    1    0    1    0    0    1
1    0    1    0    0    1    1    0    1    1    1
0    1    1    1    0    0    0    1    0    1    0
...

目前,我看到的唯一实现是我的决策矩阵每一行的 if/elif 语句套件,例如:

if S1==0 and S2==1 and S3==0 and S4==0 and S5==1 and S6==1 and S7==0 and S8==1:
    relay_state('R1', 0)
    relay_state('R2', 0)
    relay_state('R3', 1)
elif ...

这肯定会奏效,但我想知道是否有更清洁的方法来实现这一点?

4

2 回答 2

8

你可以使用元组字典

matrix = {
   (0,1,0,0,1,1,0,1):(0,0,1),
   (1,0,1,0,0,1,1,0):(1,1,1),
   (0,1,1,1,0,0,0,1):(0,1,0),

}
S1,S2,S3,S4,S5,S6,S7,S8 = 0,1,0,0,1,1,0,1
R1,R2,R3=matrix[S1,S2,S3,S4,S5,S6,S7,S8]
print (R1,R2,R3)

$python test.py
(0, 0, 1)
于 2013-11-11T09:45:08.627 回答
1

使用列表和比较列表:

if sensors == [0,1,0,1, ....]:

更有效的符号 - 如果您的处理程序是函数,您可以使用字典

decision_matrix = { (0,1,1,... ): some_handler, ... }
...
decision_matrix[sensors]()
于 2013-11-11T09:44:30.147 回答