我想知道是否有任何方法可以为if语句的多个级别提供一个else语句。
我详细说明:
if <condition-1>:
if <condition-2>:
do stuff
elif <condition-3>:
do other stuff
else: #if either condition-1 or all nested conditions are not met
do some other thing
我知道这可以通过添加&#34;做其他事情&#34;的功能轻松解决。并使用嵌套的else和toplevel来调用它,但我想知道是否有某种方法可以让它看起来更清洁。
提前致谢,欢迎任何想法。
答案 0 :(得分:2)
不,不是真的。这实际上是python不希望你做的事情。它更喜欢保持可读性和清晰度,而不是华丽的&#34;招数。你可以通过组合语句或创建一个&#34;标志来做到这一点。变量
例如,你可以做
if <condition-1> and <condition-2>:
# do stuff
elif <condition-1> and <condition-3>:
# do other stuff
else:
# do some other thing
或者,如果您因某些原因不想继续重复第1项条件(检查费用很高,更不清楚重复,或者您只是不想继续输入它),我们可以做到
triggered_condition = False
if <condition-1>:
if <condition-2>:
triggered_condition = True
# do stuff
elif <condition-3>:
triggered_condition = True
# do some other stuff
if not triggered_condition:
# do some other thing
如果在函数中使用了它,我们甚至可以跳过标志
if <condition-1>:
if <condition-2>:
# do stuff and return
elif <condition-3>:
# do some other stuff and return
# do some other thing
# if we got here, we know no condition evaluated to true, as the return would have stopped execution
答案 1 :(得分:0)
有几种方法不是特别直观/可读......但是工作:
在这一篇中,我们利用了for ... else ...
语法。任何成功的条件都应该发出中断
for _ in [1]:
if <condition>:
if <condition>:
# where ever we consider ourselves "successful", then break
<do stuff>
break
elif <condition>:
if <condition>:
<do stuff>
break
else:
# we only get here if nothing considered itself successful
另一种方法是使用try ... else ...
,其中&#34;成功&#34;分支机构应该提出异常。
这些并不特别好,不建议使用!