zoukankan      html  css  js  c++  java
  • 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
    """

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

    积一时之跬步,臻千里之遥程
  • 相关阅读:
    集合
    第五天
    第四天
    第二天
    ieee 期刊缩写(转载)
    JAVA学习笔记03
    JAVA学习笔记2
    JAVA学习笔记01
    Latex 图片排版
    非奇异终端滑模
  • 原文地址:https://www.cnblogs.com/wangbaojun/p/10594950.html
Copyright © 2011-2022 走看看