for--else大坑问题

这是一次偶然发现的问题,做一下记录

a = [{'w0', 'b0', 'v0'}, {'w1', 'b1', 'v1'}, {'w2', 'b2', 'v2'}]

for i in a:
    for j in i:
        print(j, '我是内循环')
    else:
        print(j, '我是else')

上面这个代码大家都知道他会内循环完执行else,下面是运行结果

b0 我是内循环
w0 我是内循环
v0 我是内循环
v0 我是else
v1 我是内循环
b1 我是内循环
w1 我是内循环
w1 我是else
w2 我是内循环
b2 我是内循环
v2 我是内循环
v2 我是else

进程已结束,退出代码 0

但是当我们在else里加判断结束语句

for i in a:
    for j in i:
        print(j, '我是内循环')
    else:
        print(j, '我是else')
        if True:
            break

执行结果如下:

w0 我是内循环
b0 我是内循环
v0 我是内循环
v0 我是else

进程已结束,退出代码 0

也就是说for--else的else语句里面break结束的是外层循环

那么如果我们在else里进行for--else嵌套,else所break的是哪一个呢?

a = [{'w0', 'b0', 'v0'}, {'w1', 'b1', 'v1'}, {'w2', 'b2', 'v2'}]

for i in a:
print(i, '我是最外层循环,top')
for j in i:
print(j, '我是内循环')
else:
for k in a:
print(k, '我是else内内循环')
else:
for v in k:
print(v, '我是else内内内循环')
else:
if True:
break

输出结果:

{'v0', 'b0', 'w0'} 我是最外层循环,top
v0 我是内循环
b0 我是内循环
w0 我是内循环
{'v0', 'b0', 'w0'} 我是else内内循环
{'v1', 'w1', 'b1'} 我是else内内循环
{'w2', 'v2', 'b2'} 我是else内内循环
w2 我是else内内内循环
v2 我是else内内内循环
b2 我是else内内内循环

进程已结束,退出代码 0

总结就是for循环里不管内嵌循环多少层,for--else里面的else语句如果break那么都是结束最外层的那个for循环

posted @ 2020-11-09 11:18  Naihe\  阅读(103)  评论(0编辑  收藏  举报
// 音乐播放器