在
Python
中控制流主要有三种:if
、break
和continue
。本文中讲解一下后两种,同时讲解Python
中缩进对代码的影响。
- break
- 缩进不同对代码输出影响
- continue
break
- 一层循环遇到
break
条件满足,直接结束循环 - 当
if
条件不满足的时候,执行sum+=i
的操作
1 | list2 = [1,2,3,5,8,4,9] |
- 两层循环,
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 | for i in range(4): |
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 | for i in range(4): |
解释
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 | list1 = [1, 2, 3, None, 6, None, 8] |