感谢金角大王alex的解惑!!!
循环是什么?
转自维基的解释:
- 循环是一段在程序中只出现一次,但可能会连续运行多次的代码。循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都运行一次。
- 完整解释移步维基百科-程序循环
python实现循环的方式有:
- for循环
- 它拥有一个循环计数器或是循环变数。这使得For循环能够知道在迭代过程中的执行顺序。
 
- while循环
- 可以在特定条件成立时继续循环的进行,或是特定条件不成立时继续循环的进行,进行到特定条件成立为止
 
这里以while循环为例,解决3层循环嵌套的进入退出。
设置3个变量,作为3个while的条件
lay1_loop = False
lay2_loop = False
lay3_loop = False
先实现一个两层循环:
while not lay1_loop:    #条件为真,进入第一层while循环
    print("这里是第一层循环...")        
    choose = input("q,退出  其他键继续: ").strip()
    if choose == 'q': 
        lay1_loop = True
        lay2_loop = True
    else:
        pass
    while not lay2_loop:  #条件为真,进入第二层while循环
        print("这里是第二层循环...")        
        choose = input("b,返回上一层 q,退出 其他键继续: ").strip()                
        
        if choose == 'b': 
            lay2_loop = True        
        elif choose == 'q':            
            lay2_loop = True            
            lay1_loop = True
        else:
            pass
改进:
这段代码中,如果想要退出,就要同时设置lay1_loop, lay2_loop 为True。
假设循环有更多层的嵌套,相应的就要同时更改多个变量。这样代码就会很容易出错,也不够友好。
那么既然要退出整个循环,是否可以只要设lay1为True并且第二层的while
条件也为假呢?
修改后的代码:
while not lay1_loop:    #条件为真,进入第一层while循环
    print("这里是第一层循环...")        
    choose = input("q,退出  其他键进入下一层: ").strip()
    if choose == 'q': 
        lay1_loop = True  
    else:
        pass
    while not (lay1_loop or lay2_loop):  #当lay1为真,两个while的条件都为False,退出循环
        print("这里是第二层循环...")        
        choose = input("b,返回上一层 q,退出 其他键进入下一层: ").strip()                
        
        if choose == 'b': 
            lay2_loop = True        
        elif choose == 'q':        
            lay1_loop = True
        else:
            pass
同理继续添加第三次while循环。
3层嵌套
while not lay1_loop:    #条件为真,进入第一层while循环
    print("这里是第一层循环...")        
    choose = input("q,退出  其他键进入下一层: ").strip()
    if choose == 'q': 
        lay1_loop = True  
    else:
        pass
    while not (lay1_loop or lay2_loop):  #当lay1为真,两个while的条件都为False,退出循环
        print("这里是第二层循环...")        
        choose = input("b,返回上一层 q,退出 其他键进入下一层: ").strip()                
        
        if choose == 'b': 
            lay2_loop = True        
        elif choose == 'q':        
            lay1_loop = True
        else:
            pass
        while not (lay1_loop or lay2_loop or lay3_loop):
            print("这里是第三层循环...")
            choose = input("b,返回上一层 q,退出:  ").strip()
            if choose == 'b': 
                lay3_loop = True        
            elif choose == 'q':        
                lay1_loop = True
小Bug:
当进入二层循环后:输入b返一层循环后(lay2_loop = True),程序会卡在第一层循环中,无法再次进入二层。因为第二个while的条件不成立了。
同理二层进入三层也会碰到这个问题。
解决:
第一层if中的pass语句改为 lay2_loop = False
第二层if中的pass语句改为 lay3_loop = False