第九课讲for循环时有个疑问
刚刚在看第九课讲for循环时有个疑问:[*]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
我想问的是i +=2这个语句应该是对i进行了重新赋值了吧,在下一次循环时为什么不是应用重新赋值过后的i参与循环,而是按照range预订好0-10循环呢?搞不明白,希望高人指点
你希望的结果是怎么样的? ~风介~ 发表于 2015-5-24 22:42
你希望的结果是怎么样的?
只是我觉得按照这个编程,结果应该是
2
4
6
8
在第一次循环之后,i难道不是编程2了吗?为什么又从1开始的? for i in range(10):
print ('id: ',id(i))
if i%2!=0:
print ('last:%d'%i)
print ('last id: ',id(i))
continue
i += 2
print ('next:%d'%i)
print ('next id: ',id(i))
++++++
>>>
id:1469889944
next:2
next id:1469889976
id:1469889960
last:1
last id:1469889960
id:1469889976
next:4
next id:1469890008
id:1469889992
last:3
last id:1469889992
id:1469890008
next:6
next id:1469890040
id:1469890024
last:5
last id:1469890024
id:1469890040
next:8
next id:1469890072
id:1469890056
last:7
last id:1469890056
id:1469890072
next:10
next id:1469890104
id:1469890088
last:9
last id:1469890088
>>> i += 2 之后id不同了, 就是说这个i不是之前的i了~ ~风介~ 发表于 2015-5-25 11:43
i += 2 之后id不同了, 就是说这个i不是之前的i了~
非常感谢你的耐心解答,你讲解的我明白了,但我现在有点担心以后再遇到类似情况不知道该如何区分,也许是我现在初学还有好多东西没接触到的原因吧,继续学习 ~风介~ 发表于 2015-5-25 11:43
i += 2 之后id不同了, 就是说这个i不是之前的i了~
刚才重新思考下,你看看我理解的对不对。循环应该是按照for i in range(10):进行的,下面的语句都是在这个循环里面运行的,也就是说i从1-10的这个循环套路要比其内部的i高一个等级,在内部发生的i值的变化对比他高一个等级的i无法造成影响。请前辈指教 wwsw0105 发表于 2015-5-25 12:16
刚才重新思考下,你看看我理解的对不对。循环应该是按照for i in range(10):进行的,下面的语句都是在这 ...
随便你怎么想,结果就这样~{:7_140:} 我这个for看了三遍了都还没明白呢
页:
[1]