本帖最后由 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