在
Python
中控制流主要有三种:if
、break
和continue
。本文中讲解一下后两种,同时讲解Python
中缩进对代码的影响。
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对齐
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
只能控制离它最近的循环,此处为第二层循环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
表示:满足当前条件,结束本次循环,继续下次循环
;上面的break
是直接终止后面的循环。
list1 = [1, 2, 3, None, 6, None, 8]
sum = 0
for i in list1:
if i == None:
continue # 满足条件表示跳出当前循环,后面的循环继续执行
sum += i
sum # 20