打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
吃透Python中的if条件语句,没你想的那么简单

大家好,我是林路~

本文介绍的是Python中的两种控制流语句:break和continue,35个经典案例:吃透Python中的if条件语句,Python中的for循环,没你想的那么简单~

首先,从英文单词的字面上,我们可以简单地理解下二者:

  • break,中断的意思,在代码中就表现为中断后面代码的运行
  • continue,继续的意思,在代码中体现为继续后面代码的运行

其次,我们需要明白的是二者都有跳出循环的作用,都可以用在for循环和while循环中,但是作用的范围却是不同的。

本文主要讲解两个主要知识点:

  • break和continue语句
  • 缩进对代码块的影响

range函数

下面多个例子中的range(m,n,s)函数表示的是取指定数值区间的数值作为迭代器:

  • m:起始位置,整数;默认从0开始,可以取到m;可省略
  • n:终止位置,整数,必须有,取不到n;不能省略
  • s:步长,每次取数的长度;可正可负

下面举例说明:

单层for循环-break

例子1:

for i in range(8): # i=0,1,2....7 if i == 5: # 当i等于5的时候执行break操作 break print(i) # 结果01234

怎么解释上面的结果呢?

  • 当i=0,进入if,不等于5,不执行break,直接print,此时输出0
  • 同样的道理,i=1,2,3,4都是同样的操作
  • 当i=5进入if语句中,发现i=5,执行break,跳出了整个循环,后面的i=6、7就不会执行了

看例子2(只是没有缩进):

for i in range(8):   # i=0,1,2....7    if i == 5:        breakprint(i)# 结果5

这个例子说明的是缩进对代码执行的影响:

  • i=0进行if,不等于5,不执行break,进入下次循环即i=1
  • 同样的道理,当i=1、2、3、4进行if,不等于5,不执行break
  • 当i=5进入if的时候,刚好是等于5,执行break语句跳出整个循环,此时i刚好是5,打印出来print(i)就是5

例子3:

这个例子的结果解释同例子1,只是将range函数的迭代器换成了字符串的形式:

for i in 'python': if i == 'o': break print(i) # 结果pyth

这三个break相关的例子说明:当遇到满足break条件,则会跳出整个for循环;当然,这仅仅是针对单层循环。

单层for循环-continue

例子4:

for i in range(8):  # i=0,1,2....7    if i == 5:        continue    print(i)    # 结果0123467

解释下上面的结果:

  • 当i=0进入if循环,不等于5,不执行continue,执行print(i),打印0;进入下次循环
  • 当i=1、2、3、4进入if循环的时候,都是同样的效果,且执行print(i)的语句
  • 当i=5进入if循环,刚好i等于5,执行continue,跳出此时的print(i),也就是不打印5;直接从开头进入下次的循环
  • 当i=6、7就和i=0、1、2、3、4的解释是相同的

如果print语句不缩进呢?看例子5:

for i in range(8): if i == 5: continueprint(i)# 结果7

从上面例子5的结果可以看出来,最后一次i是等于7;当我们的print语句不缩进的时候,只有当for语句完全执行完毕才会执行,所以要等到最后的i=7才会打印。

例子6:

for i in ['语文','数学','英语']:    if i != '数学':        continue    print(i)    # 结果数学

解释上面的结果:

  • i为“语文”,第一次进入if语句,i不等于数学,执行continue,不会执行print;进入下次循环
  • 第二次i取值为“数学”,进入if中,不满足if条件,所以不执行continue,执行print,打印出“数学”
  • 后面的“英语”满足if条件,直接continue跳出去了

上面3个continue相关的例子说明:当满足continue语句的条件,则会跳出当前的这次不执行,但是不影响后面的语句执行

高斯求和

例子7:

sum = 0 # 和的初始值for i in range(1,101): if i % 2 == 0: # i除以2的余数为0,即i是偶数 break sum += i # sum = sum + iprint(sum) # 结果1

解释上面的结果:

  • 当i=1进入if,不满足if条件,执行sum += i的语句,此时sum变成了1,i变成了2进入下次循环
  • 当i=2进入if,满足偶数的条件,执行break,直接跳出整个循环,后面的sum+i不再执行
  • print(sum)实际上就是第一步中的sum值1

例子9:

sum = 0for i in range(1,101):   # i从1到100    if i % 2 == 0:    # i除以2的余数为0,即i是偶数        continue    sum += iprint(sum)        # 结果2500

解释上面的结果:

  • 当i=1进入if循环,不满足if条件(i为奇数),执行sum += i,sum变成1,i变成2进入下次循环
  • 当i=2进入if循环,刚好满足if条件(i为偶数),执行continue,不执行后面的sum += 1,i变成3进入下次循环
  • 当i=3进入if循环,不满足if条件(i为奇数),执行sum += i,sum变成1+3=4,i变成4进入下次循环
  • 当i=4进入if循环,刚好满足if条件(i为偶数),执行continue,不执行后面的sum += 1,i变成5进入下次循环

通过前4步我们发现:只有当i为奇数的时候才会执行相加的操作,所以实际上就是1到100的奇数之和,刚好2500

双层for循环-break

例子10:

for i in range(3): # i012 for j in range(4): # j0123 if j > i: break print((i,j)) # 和if对齐 # 结果(0, 0)(1, 0)(1, 1)(2, 0)(2, 1)(2, 2)

解释上面的结果:

上面的代码包含两层for循环,从i=0进入第一层循环:

ij是否满足if执行break是否执行print00否是,(0,0)01是否02已跳过
03已跳过
10否是,(1,0)11否是,(1,1)12已跳过
13已跳过
20否是,(2,0)21否是,(2,1)22否是,(2,2)23已跳过

这就是整个过程的执行和解释~

例子11:

for i in range(3):    # i=0,1,2    for j in range(4):   # j=0,1,2,3        if j > i:            break    print((i,j))  # 和第二个for对齐    # 结果(0, 1)(1, 2)(2, 3)

解释上面的结果:

这个例子和上面一个的区别是:print和第二个for对齐,也就是说只有当第二个for全部运行结束才会执行print

ij是否满足if执行break是否执行print00否否01是是,(0,1)02已跳过
03已跳过
10否否11否否12是是,(1,2)13已跳过
20否否21否否22否否23是是,(2,3)

也就是说:当两层循环的时候,break会跳出最里层(靠break最近)的for循环

例子12:

for i in range(3): for j in range(4): if j > i: breakprint((i,j))# 结果(2, 3)

上面的结果解释和前两个的过程相同,直到最后的一次(2,3)满足条件break条件便会执行print。

双层for循环-continue

例子13:

for i in range(3):  # i=0,1,2    for j in range(4):  # j=0,1,2,3        if j > i:            continue        print((i,j))        # 结果(0, 0)(1, 0)(1, 1)(2, 0)(2, 1)(2, 2)

解释上面的结果:

ij是否满足if执行continue是否执行print00否是,(0,0)01是,跳出
02是,跳出
03是,跳出
10否是,(1,0)11否是,(1,1)12是,跳出
13是,跳出
20否是,(2,0)21否是,(2,1)22否是,(2,2)23是,跳出

例子14:

for i in range(3): for j in range(4): if j > i: continue print((i,j)) # 结果(0, 3)(1, 3)(2, 3)

解释上面的结果:

print语句的代码进行了缩进,只有当第二层的for全部执行完毕,才会print

ij是否满足if执行continue是否执行print00否否01是,跳出否02是,跳出否03是,跳出是,(0,3)10否否11否否12是,跳出否13是,跳出是,(1,3)20否否21否否22否否23是,跳出是,(2,3)

例子15:

for i in range(3):    for j in range(4):        if j > i:            continueprint((i,j))# 取最后一次的值(2, 3)   

总结下二者的本质区别:break 是用于终止整个循环;而continue 是跳出本次循环,不影响下次循环的执行。

神器网站

最后送给大家一个经典的神器网站:https://pythontutor.com/visualize.html#mode=edit,这个网站能够演示我们代码每一步的运行。

我们以这个代码为例:

for i in range(3): for j in range(4): if j > i: continue print((i,j)) # 结果(0, 3)(1, 3)(2, 3)

1、写入代码

2、演示过程:

3、具体过程:40步全部运行结束,我们想要的结果就看到了:

感兴趣的朋友可以去这个网站看看~

原文链接:
https://mp.weixin.qq.com/s/OhUQ-sXO7IOvF1z03r5_ww

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python 基础(二):基本语句
python中continue,break和pass的区别
Python基础之循环语句
break 和continue的区别
简单学Python——while循环终止和停止1次
Python解析之break、continue、pass语句
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服