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

  • 相关阅读:
    获取数据窗口的report对象 pb
    职业中的人与人。。。
    关于表格的设置
    今天学到的关于UI的一点东西
    给QQ发匿名消息
    这两天在改以前写的程序,很闷,记点流水账,:)
    我也要回家了,给大家道别
    时间过的好快啊,2月1号了,几个问题!
    开始新的一年的新生活..
    @dudu,临走问一下
  • 原文地址:https://www.cnblogs.com/1314h/p/13947615.html
Copyright © 2011-2022 走看看