有人知道如何计算出重复的if/else结构吗?

2024-10-03 21:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有表格里的代码

if scenarioOne:
    actionC
elif scenarioTwo:
    if B:
         actionB
    else:
         actionC
else:
    if A:
         actionA
    elif B:
         actionB
    else:
         actionC

有代码重复,但我不知道如何消除它。一个选项是list(predicate,lambda)对,然后我可以遍历列表,找到第一个计算结果为true的谓词并执行相应的操作。我会将actionC与always true谓词配对。不确定是否有更好的方法,不管是用Python还是函数式语言。你知道吗


Tags: 代码trueif选项elselist表格谓词
2条回答

好吧,也许这不是最具说明性的例子,但我会把它作为一个例子。 卡诺图是一个强大的工具,以简化二进制函数,可以应用于许多类似的情况。你知道吗

TLDR公司:

# for brewity, s1 = scenarioOne and s2=scenarioTwo
if (A and not s1 and not s2):
    actionA
elif (B and not s1 and (not A or s2)):
    actionB
else:
    actionC

这是真值表。行是AB值,列是SCENARIONE(s1)+scenarioTwo(s2)

actionA
    00  01  11  10
00  
01
11   1
10   1


actionB
    00  01  11  10
00  
01   1   1
11       1
10   

actionC
    00  01  11  10
00   1   1   1   1
01           1   1
11           1   1
10       1   1   1

首先,三个动作是独占的,完全覆盖了输入空间。 现在,第一个表:两个1在一起,可以表示为:

A = !s1 !s2 A

第二张桌子:两对

B = !s1 s2 B | !s1 !A B = !s1 B (!A | s2)

剩下的是C,但如果我们想要公式,它是三个元素:右半部分、顶行和底行中间的对:

C = s1 | !A !B | A !B s2 = s1 | !B (s2 | !A)

尝试以下操作:)

if scenarioOne:
    actionC
elif (A && !scenarioTwo):
    actionA
else:
    if B:
         actionB
    else:
         actionC

相关问题 更多 >