我正在尝试找到一个干净的解决方案来实现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
...
目前我看到的唯一一个实现,就是我的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 ...
这肯定有用,但我想知道是否有更清洁的方法来实现这个?
答案 0 :(得分: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)
答案 1 :(得分:1)
使用列表和比较列表:
if sensors == [0,1,0,1, ....]:
更有效的符号 - 如果您的处理程序是函数,您可以使用字典
decision_matrix = { (0,1,1,... ): some_handler, ... }
...
decision_matrix[sensors]()