与Python相反的......其他

Joh*_*ard 6 python for-loop if-statement python-3.x

以下python代码将导致打印n(14),因为for循环已完成.

for n in range(15):
    if n == 100:
        break
else:
    print(n)
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是与此相反.有没有办法做一个... else(或while ... else)循环,但只有在循环确实中断时才执行else代码?

In *_*ico 16

for...elseifbreak在Python(或我所知的任何语言)中没有明确的类似构造,因为你可以简单地这样做:

for n in range(15): 
    if n == 100:
        print(n)  
        break
Run Code Online (Sandbox Code Playgroud)

如果你有多个breaks,请print(n)输入一个函数,这样你就不要重复自己了.

  • 为什么不?它有同样的效果.如果你想在遇到`break`语句时运行代码,那么只需...在break语句之前运行代码 (4认同)

smi*_*hak 6

如果你在循环中打破多个点并且不想重复代码,则使用异常的更通用的解决方案:

try:
    for n in range(15):
        if n == 10:
            n = 1200
            raise StopIteration()
        if n > 4:
            n = 1400
            raise StopIteration()
except StopIteration:
    print n
Run Code Online (Sandbox Code Playgroud)