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



在下面的代码中,'else'对于所有'if'语句都是相同的?是否有一种方法,只有一个"else"语句,而不是重复相同的代码在所有的"if"语句块为"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")

流程图

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

Guard语句尝试先处理else情况。我们写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")

更多内容请点击链接:- Youtube

您看起来像在嵌套的测试序列

你测试A如果A没问题,你测试BC

如果任何测试失败,打印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")

我很确定你能找到一种方法最终得到你的序列测试。

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

最新更新