如何突破Python中的多个循环?

如何突破Python中的多个循环?

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

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

有办法让这件事成功吗?或者,如果用户满意的话,我是否需要做一次检查来打破输入循环,然后另一次,更有限制地,在外部循环中签出所有内容?


LEATH
浏览 895回答 3
3回答

HUX布斯

我的第一反应是将嵌套循环重构为函数并使用return为了逃跑。

蛊毒传说

这是另一个很短的方法。缺点是你只能打破外部循环,但有时正是你想要的。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/etc结构:为什么python在for和while循环之后使用“Other”?关键洞察力:只有它似乎好像外圈总是坏掉似的。但如果内环不破裂,外部回路也不会中断。这个continue陈述是这里的魔力。在“换-否则”条款中。按定义如果没有内心的突破,就会发生这种情况。在这种情况下continue干净利落地绕过外面的裂口。

ABOUTYOU

首先,普通的逻辑是有帮助的。如果,由于某种原因,终止条件无法解决,例外是一个倒退的计划。class GetOutOfLoop( Exception ):     passtry:     done= False     while not done:         isok= False         while not (done or isok):             ok = get_input("Is this ok? (y/n)")             if ok in ("y", "Y") or ok in ("n", "N") :                  done= True # probably better                 raise GetOutOfLoop         # other stuffexcept GetOutOfLoop:     pass对于这个特定的例子,可能没有必要出现异常。另一方面,在字符模式应用程序中,我们经常有“Y”、“N”和“Q”选项。对于“Q”选项,我们希望立即退出。这更不寻常。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python