FC童梦 发表于 2020-4-28 09:57:59

continue的用法不懂

小甲鱼老师这个我看了好多遍就是弄不懂
>>> 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
为什么会输出这些数字?求大神的详细解答,谢谢!

wuqramy 发表于 2020-4-28 10:01:41

continue的作用就是结束当前循环,开始第二轮循环

qiuyouzhi 发表于 2020-4-28 10:02:28

假如这里有一段代码:
>>> for i in range(10):
        if i % 2:
                continue
        print(i)

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

sunrise085 发表于 2020-4-28 10:05:46

continue就是结束本次循环,开始下一次循环。其作用就是跳过循环中continue以下的部分代码,直接开始下一次循环
在这个例程中,continue就是不再执行下面的两个语句

这个例程的作用就是,若i是奇数就直接输出,若i是偶数,就先对i+2,再输出

_2_ 发表于 2020-4-28 10:12:58

模拟一下:
第一轮循环:i = 0, i % 2 = 0 ( == 0) ,i= i + 2, 打印 i , 继续第二轮
第二轮循环 : i = 1, i % 2 = 1 ( != 0), 打印 i ,继续第三轮循环
然后就一直是这两种状态,直到循环结束

heidern0612 发表于 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,打印,执行下次循环。

……后面依次。

FC童梦 发表于 2020-4-28 10:13:29

qiuyouzhi 发表于 2020-4-28 10:02
假如这里有一段代码:

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

谢谢,但我觉得四楼的比较好理解,抱歉,没能给你最佳答案

旃檀木 发表于 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,以此类推。

雀归归 发表于 2020-4-30 18:24:53

_2_ 发表于 2020-4-28 10:12
模拟一下:
第一轮循环:i = 0, i % 2 = 0 ( == 0) ,i= i + 2, 打印 i , 继续第二轮
第二轮循环 : i =...

他这个第一轮循环 i=0i%2 ==0 不应该直接打印了 再 continue 然后 i = i +2 么

weiyideid823 发表于 2020-7-9 21:24:17

qiuyouzhi 发表于 2020-4-28 10:02
假如这里有一段代码:

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

大神,我请教下,您代码的第二行
if i % 2:
这个后面不需要加上 !=0吗
初学者,感谢不吝赐教~

qiuyouzhi 发表于 2020-7-9 21:48:23

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


不需要,因为i % 2的结果要么是0(False),要么是1(True)

weiyideid823 发表于 2020-7-9 21:54:56

qiuyouzhi 发表于 2020-7-9 21:48
不需要,因为i % 2的结果要么是0(False),要么是1(True)

但是我试了下您这个程序,输出的好像是!=0的结果,是有什么默认的说法吗?
不好意思,再次请教下

qiuyouzhi 发表于 2020-7-9 21:59:27

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

0是False,不为0的都是True。

weiyideid823 发表于 2020-7-9 22:00:50

qiuyouzhi 发表于 2020-7-9 21:59
0是False,不为0的都是True。

哦哦,明白了,感谢!{:5_108:}
页: [1]
查看完整版本: continue的用法不懂