前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >for/while else你理解了?

for/while else你理解了?

作者头像
叶子陪你玩
发布2020-05-12 10:48:42
4390
发布2020-05-12 10:48:42
举报

if elif else,for break continue pass,应该都见过,for else 和 while else组合的语句很少见,可用的场景也不多,但是了解他们的原理还是很有必要的,说不定哪天就可以用上了。

先来看到两道题,下面三个代码分别打印什么结果?

答案公布,看看和你的想法是不是一样?

代码-1结果:0 1 2 over 代码-2结果:0 代码-3结果:0 over

下面的while else原理也是一样的,根据上面的结果说说你的答案,可以下面留言哦~~

下面来看一个实际使用for else语句的案例,判断一个数是否为素数,传入一个大于1的数,可以判断出这个数是不是素数,使用格式如下。

在使用for else之前,可以尝试不使用这个方法看能不能够解决。

第一次尝试:

思路很简单,就是判断能不能对找到一个除了1 和 它 本身外的约数,如果可以那么就不是素数,否则是素数。

结果和我们的想象有点出入,之所以会这样,是因为只有对所有的数都判断完之后,才能确定这个数是否为素数,而我们每个数字进行判断后都会输出一个结果来,而我们想要的是直接给出最终的答案,所以这个思路还是有缺陷。

第二次尝试:

既然需要将所有的数字都判断完才能确定,那么就将print(f"{target}不是素数")放到for循环的外层。

如果是素数的话,的确达到我们想到的结果了,但是不是素数的话,执行完for循环后还是会执行后面的print语句。

第三次尝试

有什么方法可以让程序判断出不是素数就直接退出呢?这里因为刚好是在函数里,所以可以利用return替换break的方法,直接退出函数。

第四次尝试:

上面因为刚好是在函数里面,所以有点小技巧,那么不用return可不可以呢?那么我们就只能通过约数的个数来判断了,如果约数个数大于1个(除去1和本身外)就不是素数,否则就是。

到这里我们就解决了问题了。

尝试了这么多,就是为了解决:

1.当程序判断出素数后,可以通过break退出,不在执行后面的代码。

2.正常循环完所有情况之后,又可以执行后面的代码。

最终解决方法

而for else刚好就可以解决这个问题,可以看看下面的代码,注意里面的break不能省略。

总结

for else语句如果for循环时正常循环结束没有break的话,是会执行后面的else语句的;如果是break退出的话,就会跳出for循环,并且不在执行后面的else语句。

(全文完)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一次尝试:
  • 第二次尝试:
  • 第三次尝试
  • 第四次尝试:
  • 最终解决方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档