首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python --跳出所有循环

Python --跳出所有循环
EN

Stack Overflow用户
提问于 2014-01-23 04:30:52
回答 4查看 59.8K关注 0票数 31

我使用了多个嵌套的for循环。在最后一个循环中有一条if语句。当计算结果为True时,所有for循环都应该停止,但这不会发生。它只是从最里面的for循环中跳出来,然后继续运行。如果遇到break语句,我需要停止所有循环。

我的代码:

代码语言:javascript
复制
for i in range(1, 1001):
    for i2 in range(i, 1001):
        for i3 in range(i2, 1001):
            if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
                print i*i2*i3
                break
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-23 04:33:15

你应该把你的循环放在一个函数里面,然后返回:

代码语言:javascript
复制
def myfunc():
    for i in range(1, 1001):
        for i2 in range(i, 1001):
            for i3 in range(i2, 1001):
                if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
                    print i*i2*i3
                    return # Exit the function (and stop all of the loops)
myfunc() # Call the function

使用return会立即退出封闭函数。在此过程中,所有循环都将停止。

票数 57
EN

Stack Overflow用户

发布于 2014-01-23 04:37:56

您可以引发异常

代码语言:javascript
复制
try:
    for a in range(5):
        for b in range(5):
            if a==b==3:
                raise StopIteration
            print b
except StopIteration: pass
票数 18
EN

Stack Overflow用户

发布于 2014-01-23 04:39:40

为什么不使用生成器表达式:

代码语言:javascript
复制
def my_iterator()
    for i in range(1, 1001):
        for i2 in range(i, 1001):
            for i3 in range(i2, 1001):
                yield i,i2,i3

for i,i2,i3 in my_iterator():
    if i*i + i2*i2 == i3*i3 and i + i2 + i3 == 1000:
        print i*i2*i3
        break
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21293336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档