假设一段python程序有多重循环,我们都知道在一个循环当中,用break是退出当前的循环,然后继续下一次循环,但是如何才能跳出多重循环呢,实际就是结束所有的循环。

思路1::可以定义一个异常类,在需要退出循环的位置,跑出这个异常,就可以了,因为程序在遇到异常的时候,如果没有捕获异常的话,就是直接退出程序的执行,利用这个原理,认为的触发一个异常,然后把这个异常捕获到,就可以实现退出多重循环,而且不结束程序,继续往下执行

#encoding=utf-8
class getOutOfLoop(Exception):
    pass

try:
    for i in range(5):
        for j in range(5):
            for k in range(5):
                if i == j ==k ==3:
                    raise getOutOfLoop()#抛出一个异常,就会跳出所有循环
                else:
                    print i,'---',j,'---',k
except getOutOfLoop:
    pass
print "done"

结果:可以看到在循环到特定条件时,直接抛出异常,然后进行捕获,使程序跳出循环后并不结束,而是接着捕获异常的位置后面继续执行。

D:\>python test.py

0 --- 0 --- 0

0 --- 0 --- 1

0 --- 0 --- 2

0 --- 0 --- 3

0 --- 0 --- 4

0 --- 1 --- 0

0 --- 1 --- 1

0 --- 1 --- 2

0 --- 1 --- 3

0 --- 1 --- 4

0 --- 2 --- 0

0 --- 2 --- 1

0 --- 2 --- 2

0 --- 2 --- 3

0 --- 2 --- 4

0 --- 3 --- 0

0 --- 3 --- 1

0 --- 3 --- 2

0 --- 3 --- 3

0 --- 3 --- 4

0 --- 4 --- 0

0 --- 4 --- 1

0 --- 4 --- 2

0 --- 4 --- 3

0 --- 4 --- 4

1 --- 0 --- 0

1 --- 0 --- 1

1 --- 0 --- 2

1 --- 0 --- 3

1 --- 0 --- 4

1 --- 1 --- 0

1 --- 1 --- 1

1 --- 1 --- 2

1 --- 1 --- 3

1 --- 1 --- 4

1 --- 2 --- 0

1 --- 2 --- 1

1 --- 2 --- 2

1 --- 2 --- 3

1 --- 2 --- 4

1 --- 3 --- 0

1 --- 3 --- 1

1 --- 3 --- 2

1 --- 3 --- 3

1 --- 3 --- 4

1 --- 4 --- 0

1 --- 4 --- 1

1 --- 4 --- 2

1 --- 4 --- 3

1 --- 4 --- 4

2 --- 0 --- 0

2 --- 0 --- 1

2 --- 0 --- 2

2 --- 0 --- 3

2 --- 0 --- 4

2 --- 1 --- 0

2 --- 1 --- 1

2 --- 1 --- 2

2 --- 1 --- 3

2 --- 1 --- 4

2 --- 2 --- 0

2 --- 2 --- 1

2 --- 2 --- 2

2 --- 2 --- 3

2 --- 2 --- 4

2 --- 3 --- 0

2 --- 3 --- 1

2 --- 3 --- 2

2 --- 3 --- 3

2 --- 3 --- 4

2 --- 4 --- 0

2 --- 4 --- 1

2 --- 4 --- 2

2 --- 4 --- 3

2 --- 4 --- 4

3 --- 0 --- 0

3 --- 0 --- 1

3 --- 0 --- 2

3 --- 0 --- 3

3 --- 0 --- 4

3 --- 1 --- 0

3 --- 1 --- 1

3 --- 1 --- 2

3 --- 1 --- 3

3 --- 1 --- 4

3 --- 2 --- 0

3 --- 2 --- 1

3 --- 2 --- 2

3 --- 2 --- 3

3 --- 2 --- 4

3 --- 3 --- 0

3 --- 3 --- 1

3 --- 3 --- 2

done

思路2:在多重循环中用return,直接进行返回,程序遇到return就会认为程序执行结束,进而退出多个循环,这种情况,执行return后,程序不会继续往下执行,而是直接结束程序

#encoding=utf-8
#函数中,用return会退出多重循环
def test():
    for i in range(5):
        for j in range(5):
            for k in range(5):
                if i ==j==k==3:
                    return
                else:
                    print i,'---',j,'---',k
test()

结果:

D:\>python test.py
0 --- 0 --- 0
0 --- 0 --- 1
0 --- 0 --- 2
0 --- 0 --- 3
0 --- 0 --- 4
0 --- 1 --- 0
0 --- 1 --- 1
0 --- 1 --- 2
0 --- 1 --- 3
0 --- 1 --- 4
0 --- 2 --- 0
0 --- 2 --- 1
0 --- 2 --- 2
0 --- 2 --- 3
0 --- 2 --- 4
0 --- 3 --- 0
0 --- 3 --- 1
0 --- 3 --- 2
0 --- 3 --- 3
0 --- 3 --- 4
0 --- 4 --- 0
0 --- 4 --- 1
0 --- 4 --- 2
0 --- 4 --- 3
0 --- 4 --- 4
1 --- 0 --- 0
1 --- 0 --- 1
1 --- 0 --- 2
1 --- 0 --- 3
1 --- 0 --- 4
1 --- 1 --- 0
1 --- 1 --- 1
1 --- 1 --- 2
1 --- 1 --- 3
1 --- 1 --- 4
1 --- 2 --- 0
1 --- 2 --- 1
1 --- 2 --- 2
1 --- 2 --- 3
1 --- 2 --- 4
1 --- 3 --- 0
1 --- 3 --- 1
1 --- 3 --- 2
1 --- 3 --- 3
1 --- 3 --- 4
1 --- 4 --- 0
1 --- 4 --- 1
1 --- 4 --- 2
1 --- 4 --- 3
1 --- 4 --- 4
2 --- 0 --- 0
2 --- 0 --- 1
2 --- 0 --- 2
2 --- 0 --- 3
2 --- 0 --- 4
2 --- 1 --- 0
2 --- 1 --- 1
2 --- 1 --- 2
2 --- 1 --- 3
2 --- 1 --- 4
2 --- 2 --- 0
2 --- 2 --- 1
2 --- 2 --- 2
2 --- 2 --- 3
2 --- 2 --- 4
2 --- 3 --- 0
2 --- 3 --- 1
2 --- 3 --- 2
2 --- 3 --- 3
2 --- 3 --- 4
2 --- 4 --- 0
2 --- 4 --- 1
2 --- 4 --- 2
2 --- 4 --- 3
2 --- 4 --- 4
3 --- 0 --- 0
3 --- 0 --- 1
3 --- 0 --- 2
3 --- 0 --- 3
3 --- 0 --- 4
3 --- 1 --- 0
3 --- 1 --- 1
3 --- 1 --- 2
3 --- 1 --- 3
3 --- 1 --- 4
3 --- 2 --- 0
3 --- 2 --- 1
3 --- 2 --- 2
3 --- 2 --- 3
3 --- 2 --- 4
3 --- 3 --- 0
3 --- 3 --- 1
3 --- 3 --- 2

python退出多重循环的更多相关文章

  1. Python中断多重循环的几种思路exit_flag

    常见方法 II. 跳出多重循环 事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数.利用笛卡尔积.利用调试. 写成函数 在Python中,函数运行到re ...

  2. Python中断多重循环的几种思路

    I. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止.跳出单循环是很简单的,比如 for i in range(10): if i > 5: ...

  3. Javascript中快速退出多重循环的技巧

    在双重循环或多重循环中判断条件,条件符合时跳出整个嵌套循环体是常见的程序逻辑.在Javascript中有哪些跳出的方法呢?楼主简单整理了一下. 一. 使用多个break语句跳出 var breaked ...

  4. python跳出多重循环

    # -*- coding=utf-8 -*- """ 如何结束多重循环,在单层循环中,可以用break跳出循环,那两层,三层呢? """ # ...

  5. Python 跳出多重循环

    Python 本身没有“break n” 和“goto” 的语法,这也造成了Python 难以跳出多层(特定层数)循环.下面是几个跳出多层(特定层数)循环的tip. 1.自定义异常   class g ...

  6. python跳出多重循环的方法

    方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 cla ...

  7. python中列表删除和多重循环退出

    在学习python的时候,会有一些梗非常不适应,在此列举列表删除和多重循环退出的例子: 列表删除里面的坑 比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,10 ...

  8. Python之 continue继续循环和多重循环

    Python之 continue继续循环 在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环. 假设我们已经写好了利用for循环计算平均分的代码: L ...

  9. java 跳出多重循环

    public class Main { public static void main(String[] args) { System.out.println("start"); ...

随机推荐

  1. [工具]Sublime 显示韩文

  2. Android 获取View中的组件

    可以把这个view强转成ViewGroup对象,再通过getChildAt(0),getChildAt(1) 获取之后AddView可能会报错:IllegalStateException: The s ...

  3. CentOS 6.8下Apache绑定多个域名的方法

    如何通过设置Apache的http.conf文件,进行多个域名的绑定(假设我们要绑定的域名是discuz11.com和discuz22.com,独立IP为25.25.25.25). 域名/IP地址 域 ...

  4. jfinal的model和record如何相互转化?

    一.model转record: Model类: 1. /** * Convert model to record. */public Record toRecord() { return new Re ...

  5. yii---判断POST请求

    我们在进行数据的提交的时候,很多时候会判断请求状态来进行不同的选择.常见的就是判断POST以及GET的请求方式,下面是YII判断POST请求的代码示例: public function actionP ...

  6. ElasticSearch 安装 go-mysql-elasticsearch 同步mysql的数据

    一.首先在Centos6.5上安装 go 语言环境 下载Golang语言包:https://studygolang.com/dl [hoojjack@localhost src]$ ls apache ...

  7. Vim多行编辑

    vim编辑文档有时候需要多行同时插入或者删除,比如多行加注释应该怎么操作 vim进了多行编辑模式:<ESC>之后按CTRL+V进入visual block模式(列编辑). 光标移到某行行首 ...

  8. Linux中脚本

    编辑脚本要注意开头 和 修改脚本的权限 1.  开头 #!/bin/bash 如查看/etc路径下的文件,可以编辑 2.  修改权限 chmod 775 脚本文件.sh 如创建一个脚本(test.sh ...

  9. JDBC及Filter

    JNDI容器:Java Naming Directory Interface,java命名目录接口EJB:javaEE服务器端组件模型,Enterprise JavaBean,设计目标与核心应用是建立 ...

  10. 多态设计 zen of python poem 显式而非隐式 延迟赋值

    总结 1.python支持延迟赋值,但是给调用者带来了困惑: 2.显式而非隐式,应当显式地指定要初始化的变量 class Card: def __init__(self, rank, suit): s ...