python从多层循环嵌套中退出_python中退出多层循环的方法

1、定义标记变量;利用变量值的变化退出循环

# 第一种嵌套形式

a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]

# init_i = 0

# init_j = 0

flag = True

for i in range(3):

for j in range(3):

# print(i, j)

if a[i][j] == 5:

flag = False

init_i = i

init_j = j

break

if not flag:

break

print(init_i, init_j)

print(i, j)

# 第二种嵌套形式

flag = True

while flag:

for i in range(10):

print(x)

flag = False

break

2、使用函数配合return关键字 实现跳出循环(在函数内部只要执行完return语句 则直接退出函数)

def test():

while True:

for x in range(10):

print(x)

return

test()

3、利用else continue 和外层的break跳出循环

a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]

init_i = 0

init_j = 0

flag = True

for i in range(3):

for j in range(3):

# print(i, j)

if a[i][j] == 5:

flag = False

init_i = i

init_j = j

break

else:

continue

break

# if not flag:

# break

print(init_i, init_j)

print(i, j)

while True:

for x in range(4):

print(x)

if x == 2:

break

else:

print("未执行")

continue

break

python跳出多层循环的方法

今天同事问我一个python面试题,关于python跳出多层循环,原来还真没用过,网上一查还真有点意思,下面记录一下:

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

1、自定义异常

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

2、封装为函数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()

3、for ... else ... 用法

上面的两种都是只能跳出多层而不能跳出特定层数的循环,接下来的这个正是为了跳出特定层数的循环。

for i in range(5):

for j in range(5):

for k in range(5):

if i == j == k == 3:

break

else:

print i, '----', j, '----', k

else: continue

break

else: continue

break

else在 while和for 正常循环完成之后执行,和直接写在 while和for 之后没有区别,但是如果用break结束循环之后else就不会执行了。这也是个很新奇的做法。

才知道原来可以作为跳出多层循环用。不过要是有多次跳出不同层的循环的需求,也没辙了。

总结

以上所述是小编给大家介绍的python中退出多层循环的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

本文标题: python中退出多层循环的方法

本文地址: http://www.cppcns.com/jiaoben/python/245674.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值