python做循环嵌套_Python_循环嵌套

感谢金角大王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

从此再也不会在嵌套循环中迷茫了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值