清洁实施"决策矩阵"

cga*_*poz 2 python matrix

我试图找到一个干净的解决方案来实现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
...
Run Code Online (Sandbox Code Playgroud)

目前我看到的唯一一个实现是我的descision矩阵的每一行的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 ...
Run Code Online (Sandbox Code Playgroud)

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

Xav*_*lle 7

你可以使用元组字典

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)
Run Code Online (Sandbox Code Playgroud)