如何避免在多个嵌套 if/else 中重复相同的 'else' 语句?

How to avoid repeating the same 'else' statement in multiple nested if/else?

在下面的代码中,'else' 对所有 'if' 语句都是一样的吗?有没有一种方法只有一个 'else' 语句,而不是在 'else' 语句的所有 'if' 语句块中重复相同的代码?

示例如下:

if condition A == "Yes":
    print("A")
    if condition B == "Yes":
        print("B")
    else:
        print("D")
        if condition C =="Yes":
            print("C")
        else:
            print("D")
else:
    print("D")

Flowchart

你看起来像是在嵌套测试序列中

你考A 如果 A ok,你测试 B 如果 B ok 你测试 C

如果任何测试失败你打印 D

所以... 你要么他们离开测试序列测试一切打印所有是的结果 或者如果任何测试失败则打印 D(看起来像一条大错误消息)

或 你保持丑陋的 if else 序列

如果你去测试一切 你可以创建一个函数

def TestThis(Value, id):
    if value == "Yes":
        print(id)
        return 1
    else:
        return 0

并这样称呼它:

if TestThis(A, "A") == 0:
    integrity = 1
elif TestThis(B, "B") == 0:
    integrity = 1
elif TestThis(C, "C") == 0:
    integrity = 1
if integrity == 1:
    print("D")

而且我很确定您能找到一种方法来最终进行序列测试。

编辑以创建从一开始就是目标的顺序测试

在嵌套if else的情况下,可以使用guard类型的语句。 guard 在嵌套的情况下很流行 if-else 并提供干净的代码。

Guard 语句首先尝试对 else 情况进行元素化。你知道我们写其他情况来执行偏离路径。那么如果我们删除 首先偏离路径。

例如,如果您有

if condition A == "Yes":
    print("A")
    if condition B == "Yes":
        print("B")
    else:
        print("D")
        if condition C =="Yes":
            print("C")
        else:
            print("D")
else:
    print("D")

现在我可以格式化以下内容了

// 1 
if condiation A == "No" {
    print("D")
    return 
}

// 2
if condition B == "Yes" {
    print("B")
    return 
}

if condition C == "No" {
   print("D")
   return 
}

print("C")

更多请关注link:- Youtube