[英]Nested if - proceed to elif upon meeting a condition in the nested if statement
我的问题是关于带有 if 语句和 arrays 的控制流,基本上,我将一些信息提取到数组 x(给定条件 a、b)中,并且根据是否提取了一些信息或没有信息来执行流程。 我的代码如下所示:
if a:
x = ...
if not x:
if b: #repeated
x = ...
if not x:
raise Exception
elif b: #repeated
x = ...
if not x:
raise Exception
有没有什么优雅的方法可以在“if not x”之后自动跳到 elif 条件? 我的主要关注点是 a,如果 a 不存在或不包含任何信息,我正在检查 b 的存在以及它是否为空。 如果 b 为空,我将引发异常(这里我实际上可能会继续进行 else: raise Exception 但是它与上述相同,我不知道如何控制这样的流程,即重定向到另一个语句)。
我尝试过“break”,但它不适用于未嵌套在 for/while 循环中的语句。
提前致谢!
基于评论的一些澄清:
假设对x
的赋值是相同的(或者至少只在使用的值a
或b
上有所不同,您可以使用带有else
子句的循环:
for thing in [a,b]:
if not thing:
continue
x = ... # can depend on thing
if x:
break
else:
raise Exception
else
子句仅在循环因迭代耗尽而终止时执行,而不是在执行break
语句时执行。
由于上下文有限,我只能想象你想要什么。 如果您使用 python 3.10,您可能可以将match
语句用于您的用例。 这是我想象的样子,但我们可以在评论中进一步翻新:
class XMLNode:
def __init__(self, subnode, label):
self.subnode = subnode
self.label = label
node = ...
match node
case XMLNode(subnode=a, label=_):
pass
case XMLNode(subnode=b, label=_):
pass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.