Python札记41_break 和 continue语句

作者: 皮皮大 | 来源:发表于2019-07-13 10:44 被阅读4次

    本篇札记是自己在学习《利用Python进行数据分析》一书中看到了breakcontinue的例子,觉得有必要理解下Python中的for循环控制语句。在Python中控制流主要有三种:ifbreakcontinue。本文中讲解一下后两种,同时讲解Python中缩进对代码的影响。

    • break
    • 缩进不同对代码输出影响
    • continue

    break

    • 一层循环遇到break条件满足,直接结束循环
    • if条件不满足的时候,执行sum+=i的操作
    list2 = [1,2,3,5,8,4,9]
    sum = 0
    for i in list2:
        if i == 8:  # 满足条件终止整个循环,后面的也不会执行,i=8循环结束
            break
        sum += i
    
    sum  # 11=1+2+3+5
    
    • 两层循环,break只能终止内层循环,外层循环继续
    • 缩进不同,代码块不同,数据结构完全不同,对输出结果造成影响,看下面的三种情形:

    缩进不同对代码输出影响

    情形1:print和第一个for对齐

    • break控制内层循环即第二层
    • 代码是按照顺序依次执行的
    • print不在循环体里面,只有等最外层的for全部执行完毕才会执行
      image.png
    for i in range(4):
        for j in range(4):
            if j > i:
                break 
                
    print((i, j))   # 最外层的for循环结束才会执行print语句,与for对齐
    
    # 结果
    (3, 3)
    
    i j 是否满足break 是否输出
    0 0 否(继续j的循环)
    0 1 是(跳出j的循环)
    1 0 否(继续j的循环)
    1 1 否(继续j的循环)
    1 2 是(跳出j的循环)
    2 0 否(继续j的循环)
    2 1 否(继续j的循环)
    2 2 否(继续j的循环)
    2 3 是(跳出j的循环)
    3 0 否(继续j的循环)
    3 1 否(继续j的循环)
    3 2 否(继续j的循环)
    3 3 否(继续j的循环) 是(输出最后的一次结果)
    3 4 是(跳出j的循环) 结束

    情形2:print和第二层for对齐

    • break只能控制离它最近的循环,此处为第二层循环
    • 每次当有i进来,只有第二层for循环执行完毕,输出打印print结果
    • print在第一个for循环里面,for循环了4次,所以输出4个结果
    for i in range(4):
        for j in range(4):
            if j > i:
                break 
                
        print((i, j))
    
    # 结果
    (0, 1)
    (1, 2)
    (2, 3)
    (3, 3)
    
    i j 是否满足break 是否输出
    0 0 否(继续j)
    0 1 是(跳出j) 是,输出当前(i,j)值(0,1)
    1 0 否(继续j)
    1 1 否(继续j)
    1 2 是(跳出j) 是,输出当前(i,j)值(1,2)
    2 0 否(继续j)
    2 1 否(继续j)
    2 2 否(继续j)
    2 3 是(跳出j) 是,输出当前(i,j)值(2,3)
    3 0 否(继续j)
    3 1 否(继续j)
    3 2 否(继续j)
    3 3 否(整个循环结束) 是,输出当前(i,j)值(3,3)

    情形3

    for i in range(4):
        for j in range(4):
            if j > i:   
                break  # break只能终止内层j循环;不满足if条件则执行print语句
            print((i, j))
    
    # 结果
    (0, 0)
    (1, 0)
    (1, 1)
    (2, 0)
    (2, 1)
    (2, 2)
    (3, 0)
    (3, 1)
    (3, 2)
    (3, 3)
    

    解释

    i j 是否满足break 是否输出
    0 0 否(继续j)
    0 1 是(结束j)
    1 0 否(继续j)
    1 1 否(继续j)
    1 2 是(结束j)
    2 0 否(继续j)
    2 1 否(继续j)
    2 2 否(继续j)
    2 3 是(结束j)
    3 0 否(继续j)
    3 1 否(继续j)
    3 2 否(继续j)
    3 3 否(继续j)
    3 4 是(结束j)

    continue

    continue表示:满足当前条件,结束本次循环,继续下次循环;上面的break是直接终止后面的循环。

    list1 = [1, 2, 3, None, 6, None, 8]
    sum = 0
    for i in list1:
        if i == None:
            continue   # 满足条件表示跳出当前循环,后面的循环继续执行
        sum += i
    
    sum   # 20
    

    相关文章

      网友评论

        本文标题:Python札记41_break 和 continue语句

        本文链接:https://www.haomeiwen.com/subject/ptiukctx.html