处理嵌套梯形图的python

问题描述 投票:-1回答:1

在字典中,我有一些多重条件与布尔条件。

d = { 
        "statement01" = True,
        "statement02" = True, 
        "statement03" = False, 
        "statement04" = False, 
        "statement05" = False
    }

而我用 if elif

方法1

if d["statement05"]:
        if d["statement01"]:
                func01()
                func05()
elif d["statement04"]:
        if d["statement01"]:
                func01()
                func04()
elif d["statement03"]:
        if d["statement01"]:
                func01()
                func03()
elif d["statement02"]:
        if d["statement01"]:
                func01()
                func02()
elif not d["statement01"]:
        if d["statement05"]:
                func05()
        elif d["statement04"]:
                func04()
        elif d["statement03"]:
                func03()
        elif d["statement02"]:
                func02()
        else:
                func01x()

方法二

if d["statement01"]:
        func01()
        if d["statement02"]:
                func02()
        elif d["statement03"]:
                func03()
        elif d["statement04"]:
                func04()
        elif d["statement05"]:
                func05()
elif not d["statement01"]:
        if d["statement02"]:
                func02()
        elif d["statement03"]:
                func03()
        elif d["statement04"]:
                func04()
        elif d["statement05"]:
                func05()
        else:
                func01x()

随着 d 我期望的结果是do func01()func02()

但如果条件词典像

d2 = { 
        "statement01" = True,
        "statement02" = False, 
        "statement03" = False, 
        "statement04" = False, 
        "statement05" = False
    }

我希望只做 func01()而如果字典像

d3 = { 
        "statement01" = False,
        "statement02" = True, 
        "statement03" = False, 
        "statement04" = False, 
        "statement05" = False
    }

只做 func02()

有没有人可以给其他最好的方法来处理条件和预期的结果,或者可能不在这里。if else 方法?

python dictionary if-statement nested-if flow-control
1个回答
0
投票
if d["statement01"]:
        func01()

if d["statement02"]:
        func02()
elif d["statement03"]:
        func03()
elif d["statement04"]:
        func04()
elif d["statement05"]:
        func05()
elif not d["statement01"]:
    func01x()

0
投票

你的方法2是很好的,只是你可以把它替换为 elif not d["statement01"]: 仅凭 else:. 然而,如果你的条件列表比较长,可能会使用类似这样的东西。

controls = [("statement02", func02),
            ("statement03", func03),
            ("statement04", func04),
            ("statement05", func05) ]

if d["statement01"]:
        func01()

for s, f in controls:
    if d[s]: 
         f()
         break
else:
    if not d["statement01"]:
        func01x()
© www.soinside.com 2019 - 2024. All rights reserved.