我怎样才能跳出多个循环?

新手上路,请多包涵

给定以下代码(不起作用):

 while True:
    # Snip: print out current state
    while True:
        ok = get_input("Is this ok? (y/n)")
        if ok.lower() == "y": break 2 # This doesn't work :(
        if ok.lower() == "n": break

    # Do more processing with menus and stuff

有没有办法使这项工作?或者我是否必须进行一次检查以跳出输入循环,然后进行另一个更有限的检查以在用户满意的情况下一起跳出外部循环?

原文由 Matthew Scharley 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 395
2 个回答

我的第一直觉是将嵌套循环重构为一个函数并使用 return 来突破。

原文由 Robert Rossney 发布,翻译遵循 CC BY-SA 2.5 许可协议

这是另一种简短的方法。缺点是你只能打破外层循环,但有时它正是你想要的。

 for a in xrange(10):
    for b in xrange(20):
        if something(a, b):
            # Break the inner loop...
            break
    else:
        # Continue if the inner loop wasn't broken.
        continue
    # Inner loop was broken, break the outer.
    break

这使用 for / else 构造解释在: Why does python use ‘else’ after for and while loops?

关键见解:外循环 似乎 总是会中断。 但是如果内循环不中断,外循环也不会。

continue 声明是这里的魔法。它在 for-else 子句中。 根据定义,如果没有内心的崩溃,就会发生这种情况。在那种情况下 continue 巧妙地绕过了外部中断。

原文由 yak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题