鱼C论坛

 找回密码
 立即注册
查看: 1055|回复: 5

[已解决]请教:continue例子问题

[复制链接]
发表于 2018-12-25 21:29:43 | 显示全部楼层 |阅读模式

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

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

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


我看不懂为什么会这样输出,请问有人知道吗?感谢!!

最佳答案
2018-12-26 10:30:59
你之所以不理解输出结果,我认为主要原因是你不是很理解for循环的运行机制,这个在课程中讲的也不知很突出。我来向你解释一下关键点你就明白了。
此程序中有两个关键点,
第一,for循环,在开始执行的时候,会根据条件生成一个迭代器,而且此迭代器一旦生成则会执行下去,不受条件中变量变化的影响。
第二,循环的中断和中止,continue中断循环,即在for循环体内执行过程中跳出本次循环,执行下一次循环,break中止循环,即在循环体执行过程中立即跳出本循环,之后的循环也不再执行。注意注意:continue和break。只对一层循环有效!只对一层循环有效!只对一层循环有效!(重要的话说三遍!!!)多层循环的情况下,也只是跳出本层循环。
这样说,你可能不太懂,举个例子。我们以这个程序为例,在进入for循环的时候生成迭代器,循环体部分程序共执行十次,执行的时候i的值分别为[0,1,2,3,4,5,6,7,8,9],在一次循环过程中,i的值可能会被语句(i+=2)修改,但是不影响下一次循环。例如第一次循环的时候,i=0,进入循环,先执行if语句,不符合条件,然后执行语句i+=2,此时i=2,最后执行print语句输出,第一次循环执行完成,之后执行第二次循环,第二次循环时,i=1,不是2,也不是3,进入循环先执行if语句,符合条件,执行print语句输出i,然后执行continue跳出本次循环,第二次循环执行完成,之后执行第三次循环……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-25 21:42:49 | 显示全部楼层
第一次循环i为0,i %2 != 0不成立,i += 2,i为2,输出2
第二次循环i为1(注:每次循环i赋值为range(10)的每个值,不受循环体镍修改i的值的影响),i %2 != 0成立,输出1
以此类推。
其实程序可以写成
  1. for i in range(10):
  2.     if i %2 != 0 :
  3.         print(i)
  4.     else:
  5.         print(i + 2)
复制代码

其逻辑关系与原程序是一致的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-25 21:50:36 | 显示全部楼层
冬雪雪冬 发表于 2018-12-25 21:42
第一次循环i为0,i %2 != 0不成立,i += 2,i为2,输出2
第二次循环i为1(注:每次循环i赋值为range(10)的 ...

那它第二次循环i为1,输出为1,可是后面不是有“continue”吗? 不会将 1 再加2 输出?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 21:59:22 | 显示全部楼层
pythongirl 发表于 2018-12-25 21:50
那它第二次循环i为1,输出为1,可是后面不是有“continue”吗? 不会将 1 再加2 输出?

continue就跳到下一次循环了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 22:04:06 | 显示全部楼层
continue:
跳出当次循环
当循环或判断执行到continue语句时,continue后的语句将不再执行,会跳出当次循环,继续执行循环中的下一次循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-26 10:30:59 | 显示全部楼层    本楼为最佳答案   
你之所以不理解输出结果,我认为主要原因是你不是很理解for循环的运行机制,这个在课程中讲的也不知很突出。我来向你解释一下关键点你就明白了。
此程序中有两个关键点,
第一,for循环,在开始执行的时候,会根据条件生成一个迭代器,而且此迭代器一旦生成则会执行下去,不受条件中变量变化的影响。
第二,循环的中断和中止,continue中断循环,即在for循环体内执行过程中跳出本次循环,执行下一次循环,break中止循环,即在循环体执行过程中立即跳出本循环,之后的循环也不再执行。注意注意:continue和break。只对一层循环有效!只对一层循环有效!只对一层循环有效!(重要的话说三遍!!!)多层循环的情况下,也只是跳出本层循环。
这样说,你可能不太懂,举个例子。我们以这个程序为例,在进入for循环的时候生成迭代器,循环体部分程序共执行十次,执行的时候i的值分别为[0,1,2,3,4,5,6,7,8,9],在一次循环过程中,i的值可能会被语句(i+=2)修改,但是不影响下一次循环。例如第一次循环的时候,i=0,进入循环,先执行if语句,不符合条件,然后执行语句i+=2,此时i=2,最后执行print语句输出,第一次循环执行完成,之后执行第二次循环,第二次循环时,i=1,不是2,也不是3,进入循环先执行if语句,符合条件,执行print语句输出i,然后执行continue跳出本次循环,第二次循环执行完成,之后执行第三次循环……

评分

参与人数 1荣誉 +5 收起 理由
量子空间 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-11 03:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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