鱼C论坛

 找回密码
 立即注册
查看: 593|回复: 4

[已解决]0基础进入python第9张内容疑问

[复制链接]
发表于 2019-1-11 09:35:35 | 显示全部楼层 |阅读模式

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

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

x
for i in range(10):                #取值0-9
        if i%2 != 0:                #i除以2不等0的值,打印出来
                print(i)
                continue                #继续循环
        i += 2                        #这个我理解不了 ,打印出来的值,为什么会出现10...
        print(i)

打印出来的结果理解不了,各位大神能讲解一下吗?
打印结果如下
2
1
4
3
6
5
8
7
10
9
最佳答案
2019-1-11 11:26:28
本帖最后由 sunrise085 于 2019-1-11 11:30 编辑

你之所以不理解输出结果,我认为主要原因是你不是很理解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跳出本次循环,第二次循环执行完成,之后执行第三次循环……

解释一下输出结果:
2      i=0 偶数,输出i+2
1      i=1 奇数,输出i
4      i=2 偶数,输出i+2
3      i=3 奇数,输出i
6      i=4 偶数,输出i+2
5      i=5 奇数,输出i
8      i=6 偶数,输出i+2
7      i=7 奇数,输出i
10    i=8 偶数,输出i+2
9      i=9 奇数,输出i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-1-11 09:36:10 | 显示全部楼层
for i in range(10):
    if i %2 != 0:
        print(i)
        continue
    i += 2
    print(i)
这是源码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-11 09:37:39 | 显示全部楼层
i能取到8,不进if就+2打印10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-11 11:26:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2019-1-11 11:30 编辑

你之所以不理解输出结果,我认为主要原因是你不是很理解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跳出本次循环,第二次循环执行完成,之后执行第三次循环……

解释一下输出结果:
2      i=0 偶数,输出i+2
1      i=1 奇数,输出i
4      i=2 偶数,输出i+2
3      i=3 奇数,输出i
6      i=4 偶数,输出i+2
5      i=5 奇数,输出i
8      i=6 偶数,输出i+2
7      i=7 奇数,输出i
10    i=8 偶数,输出i+2
9      i=9 奇数,输出i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-11 14:08:45 | 显示全部楼层
sunrise085 发表于 2019-1-11 11:26
你之所以不理解输出结果,我认为主要原因是你不是很理解for循环的运行机制,这个在课程中讲的也不是很突出 ...

谢谢大佬我看视频就是搞不懂 i+= 2的数值。还有循环的问题感谢大佬详细解答了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-12 22:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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