wwsw0105 发表于 2015-5-24 22:14:01

第九课讲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:13

你希望的结果是怎么样的?

wwsw0105 发表于 2015-5-25 07:45:06

~风介~ 发表于 2015-5-24 22:42
你希望的结果是怎么样的?

只是我觉得按照这个编程,结果应该是
2
4
6
8
在第一次循环之后,i难道不是编程2了吗?为什么又从1开始的?

~风介~ 发表于 2015-5-25 11:42:37

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
>>>

~风介~ 发表于 2015-5-25 11:43:48

i += 2 之后id不同了, 就是说这个i不是之前的i了~

wwsw0105 发表于 2015-5-25 12:04:39

~风介~ 发表于 2015-5-25 11:43
i += 2 之后id不同了, 就是说这个i不是之前的i了~

非常感谢你的耐心解答,你讲解的我明白了,但我现在有点担心以后再遇到类似情况不知道该如何区分,也许是我现在初学还有好多东西没接触到的原因吧,继续学习

wwsw0105 发表于 2015-5-25 12:16:04

~风介~ 发表于 2015-5-25 11:43
i += 2 之后id不同了, 就是说这个i不是之前的i了~

刚才重新思考下,你看看我理解的对不对。循环应该是按照for i in range(10):进行的,下面的语句都是在这个循环里面运行的,也就是说i从1-10的这个循环套路要比其内部的i高一个等级,在内部发生的i值的变化对比他高一个等级的i无法造成影响。请前辈指教

~风介~ 发表于 2015-5-25 12:42:18

wwsw0105 发表于 2015-5-25 12:16
刚才重新思考下,你看看我理解的对不对。循环应该是按照for i in range(10):进行的,下面的语句都是在这 ...

随便你怎么想,结果就这样~{:7_140:}

seedcm 发表于 2015-6-7 22:31:15

我这个for看了三遍了都还没明白呢
页: [1]
查看完整版本: 第九课讲for循环时有个疑问