鱼C论坛

 找回密码
 立即注册
查看: 1818|回复: 13

[已解决]continue的用法不懂

[复制链接]
发表于 2020-4-28 09:57:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼老师这个我看了好多遍就是弄不懂
>>> for i in range(10):
        if i%2 != 0:
                print(i)
                continue
        i += 2
        print(i)

       
2
1
4
3
6
5
8
7
10
9
为什么会输出这些数字?求大神的详细解答,谢谢!
最佳答案
2020-4-28 10:05:46
continue就是结束本次循环,开始下一次循环。其作用就是跳过循环中continue以下的部分代码,直接开始下一次循环
在这个例程中,continue就是不再执行下面的两个语句

这个例程的作用就是,若i是奇数就直接输出,若i是偶数,就先对i+2,再输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-28 10:01:41 | 显示全部楼层
continue的作用就是结束当前循环,开始第二轮循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:02:28 | 显示全部楼层
假如这里有一段代码:
>>> for i in range(10):
        if i % 2:
                continue
        print(i)

        
0
2
4
6
8
可以发现,continue就是一个过滤器,把我们不想要的过滤掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:05:46 | 显示全部楼层    本楼为最佳答案   
continue就是结束本次循环,开始下一次循环。其作用就是跳过循环中continue以下的部分代码,直接开始下一次循环
在这个例程中,continue就是不再执行下面的两个语句

这个例程的作用就是,若i是奇数就直接输出,若i是偶数,就先对i+2,再输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:12:58 | 显示全部楼层
模拟一下:
第一轮循环:i = 0, i % 2 = 0 ( == 0) ,  i= i + 2, 打印 i , 继续第二轮
第二轮循环 : i = 1, i % 2 = 1 ( != 0), 打印 i ,继续第三轮循环
然后就一直是这两种状态,直到循环结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:13:14 | 显示全部楼层
简单理解为,continue中断当次循环,也就是下面的不执行了,直接从头进行下次循环。

break则是中断所有循环,退出while。

看着道题:

if i%2 != 0的话,也就是说i为奇数的时候,只是打印出来,然后开始下一次循环。

而i为偶数的时候,由于不满足if条件,所以不执行if,执行i自增2.

所以有了下面。

当从0开始的时候,0为偶数(或者说不满足if条件),自增2(0+2),结果为2,打印,执行下次循环。

当从1开始的时候,1为技术(满足if条件),打印1,continue直接下次循环。

当从2开始的时候,2为偶数(或者说不满足if条件),自增2(2+2),结果为4,打印,执行下次循环。

……后面依次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-28 10:13:29 | 显示全部楼层
qiuyouzhi 发表于 2020-4-28 10:02
假如这里有一段代码:

可以发现,continue就是一个过滤器,把我们不想要的过滤掉

谢谢,但我觉得四楼的比较好理解,抱歉,没能给你最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-28 10:15:01 | 显示全部楼层
当i 对2进行求余后不等于0就会打印i,且执行continue,而continue会跳出当前循环然后继续运行;
所以当程序开始i从0开始取值,不满足i%2!=0,所以不执行if的语句,直接执行i += 2,所以第一个输出的是2,然后i取值为1,满足1%2!=0,所以会执行if的语句打印i,所以第二个是1,然后执行continue,跳出该循环,所以不会执行i += 2这一条一条语句,然后现在i取值为2,以此类推。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-30 18:24:53 | 显示全部楼层
_2_ 发表于 2020-4-28 10:12
模拟一下:
第一轮循环:i = 0, i % 2 = 0 ( == 0) ,  i= i + 2, 打印 i , 继续第二轮
第二轮循环 : i =  ...

他这个第一轮循环 i=0  i%2 ==0 不应该直接打印了 再 continue 然后 i = i +2 么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 21:24:17 | 显示全部楼层
qiuyouzhi 发表于 2020-4-28 10:02
假如这里有一段代码:

可以发现,continue就是一个过滤器,把我们不想要的过滤掉

大神,我请教下,您代码的第二行
if i % 2:
这个后面不需要加上 !=0吗
初学者,感谢不吝赐教~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 21:48:23 | 显示全部楼层
weiyideid823 发表于 2020-7-9 21:24
大神,我请教下,您代码的第二行
if i % 2:
这个后面不需要加上 !=0吗

不需要,因为i % 2的结果要么是0(False),要么是1(True)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 21:54:56 | 显示全部楼层
qiuyouzhi 发表于 2020-7-9 21:48
不需要,因为i % 2的结果要么是0(False),要么是1(True)

但是我试了下您这个程序,输出的好像是!=0的结果,是有什么默认的说法吗?
不好意思,再次请教下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 21:59:27 | 显示全部楼层
weiyideid823 发表于 2020-7-9 21:54
但是我试了下您这个程序,输出的好像是!=0的结果,是有什么默认的说法吗?
不好意思,再次请教下

0是False,不为0的都是True。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 22:00:50 | 显示全部楼层
qiuyouzhi 发表于 2020-7-9 21:59
0是False,不为0的都是True。

哦哦,明白了,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表