繁体   English   中英

与 Python 相反... else

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM