[英]Opposite of Python for ... else
随着for
循环的完成,以下 Python 代码将导致打印 n (14)。
for n in range(15):
if n == 100:
break
else:
print(n)
但是,我想要相反的。 有没有办法做的......其他(或同时... ELSE)循环,但如果循环没有休息只是执行别人的代码?
Python(或我知道的任何语言)中没有明确的for...elseifbreak
构造,因为您可以简单地执行以下操作:
for n in range(15):
if n == 100:
print(n)
break
如果您有多个break
,请将print(n)
放在一个函数中,这样您就不会重复自己。
如果您在循环中的多个点中断并且不想重复代码,则使用异常的更通用的解决方案:
try:
for n in range(15):
if n == 10:
n = 1200
raise StopIteration()
if n > 4:
n = 1400
raise StopIteration()
except StopIteration:
print n
我不太喜欢到目前为止发布的答案,因为它们都需要更改循环的主体,如果主体真的很复杂,这可能会很烦人/有风险,所以这里有一种使用标志的方法。 将_break
替换为found
或其他对您的用例有意义的内容。
_break = True
for n in range(15):
if n == 100:
break
else:
_break = False
if _break:
print(n)
另一种可能性,如果它是一个在循环没有找到匹配的情况下什么都不做的函数,是在else:
块中return
:
for n in range(15):
if n == 100:
break
else:
return
print(n)
用:
for n in range(15):
if n == 100:
break
else:
print("loop successful")
if n != range(15)[-1]:
print("loop failed")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.