呆鸟的Python数据分析大数据,机器学习,人工智能人工智能/模式识别/机器学习精华专题

Python札记41_break 和 continue语句

2019-07-13  本文已影响4人  皮皮大

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


break

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

缩进不同对代码输出影响

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

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对齐

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
上一篇下一篇

猜你喜欢

热点阅读