python跳出多重循环

# -*- coding=utf-8 -*-

"""
    如何结束多重循环,在单层循环中,可以用break跳出循环,那两层,三层呢?
"""
# 用异常:
# 定义一个异常如果value >= 10,触发异常,切记,当循环在函数中时,
# 且函数中循环片段后还有代码时,不能直接return,这样会导致函数整体结束
#正确的方式为:
import datetime
class Gt_10(Exception):
    """docstring for Gt_10"""
    def __init__(self, arg):
        self.arg = arg
        
def doSomething():
    print("will start doSomething")
    try:
        for i in range(20):
            for k in range(20):
                for j in range(20):
                    if j >= 10:
                        raise Gt_10("值大于10")
                    else:
                        print(j)
    except Gt_10 as e:
        print(e)
    print('end doSomething')
    print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
doSomething()

# 将循环封装为单独的函数:
def multi_for(*arg,**kwarg):          
    for i in range(20):
        for k in range(20):
            for j in range(20):
                if j >= 10:
                    return
                else:
                    print(j)
                    continue
def doSomething1():
    print("will start doSomething")
    multi_for()
    print('end doSomething')
    print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

doSomething1()

# for--else
# 在python中,else不只和if组合,还可以和while,for组合
def doSomething2():
    print("will start doSomething")
    for i in range(20):
        for k in range(20):
            for j in range(20):
                if j >= 10:
                    break
                else:
                    print(j)
                    continue
            else:
                continue
            break
        else:
            continue
        break
    print('end doSomething')
    print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
doSomething2()





"""
output>>
will start doSomething
0
1
2
3
4
5
6
7
8
9
值大于10
end doSomething
2019-03-25 17:13:09




will start doSomething
0
1
2
3
4
5
6
7
8
9
end doSomething
2019-03-25 17:13:09






will start doSomething
0
1
2
3
4
5
6
7
8
9
end doSomething
2019-03-25 17:13:09
"""

 可以看出,三种方法都实现了多重循环的跳出,但是从代码可读性上讲,我更推荐使用第二种,函数封装多循环

积一时之跬步,臻千里之遥程
原文地址:https://www.cnblogs.com/wangbaojun/p/10594950.html