Fork me on GitHub

break/continue

Python中控制流主要有三种:ifbreakcontinue。本文中讲解一下后两种,同时讲解Python中缩进对代码的影响。

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

break

  • 一层循环遇到break条件满足,直接结束循环
  • if条件不满足的时候,执行sum+=i的操作
1
2
3
4
5
6
7
8
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
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    不在循环体里面,只有等最外层的

    `for`全部执行完毕

    才会执行



    ![img](https://s2.ax1x.com/2019/10/08/ufXVER.png)

    ```go
    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个结果
1
2
3
4
5
6
7
8
9
10
11
12
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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是直接终止后面的循环。

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

sum # 20

本文标题:break/continue

发布时间:2019年10月08日 - 19:10

原始链接:http://www.renpeter.cn/2019/10/08/break-continue.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea