首页 > 解决方案 > 嵌套if条件和break

问题描述

全部,

我有一个看起来像这样的代码:

if condition

  if condition: 
     do something
  elif condition:
     do something
  else:
     break
else: 
  do something

我有一个嵌套的if condition,我在内部“”中引入了一个中断,目的是在不满足条件时if condition从该内部中断并继续到外部的“” 。if conditionelseif condition

在您看来,这样做有意义吗?有没有写问题的简单方法。

标签: pythonif-statement

解决方案


最简单的方法是重复你的第一个条件。然后没有嵌套,else内部的 the 与外部if的相同。elseif

if conditionA and conditionB:
    do X
elif conditionA and conditionC:
    do Y
else: 
    do Z

如果conditionA代价高昂,则将结果存储在某个临时变量中。

另一种选择,您可以将您的内部移动到一个函数(包括在 and 之间执行的任何计算和if准备)并将其放在案例中,然后在外部检查两者以及该函数的结果。但是,恕我直言,这种变体可能更难理解。conditionAconditionBreturn FalseelseconditionAif

def inner():
    preparation stuff
    if conditionB: 
        do X
    elif conditionC:
        do Y
    else:
        return False
    return True

if not (conditionA and inner()):
    do Z

或者,当然,您可以重复该do Z部分,或者将其放入一个函数并在两个地方调用该函数:

if conditionA:
    preparation stuff
    if conditionB: 
        do X
    elif conditionC:
        do Y
    else:
        do Z # should be a function call
else: 
    do Z # same here

推荐阅读