鱼C论坛

 找回密码
 立即注册
查看: 7495|回复: 8

第九课讲for循环时有个疑问

[复制链接]
发表于 2015-5-24 22:14:01 | 显示全部楼层 |阅读模式

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

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

x
刚刚在看第九课讲for循环时有个疑问:
  • for i in range(10):
  •         if i%2!=0:
  •                 print (i)
  •                 continue
  •         i += 2
  •         print (i)


[color=rgb(81, 112, 58) !important]复制代码


这个程序中,运行的结果是
2
1
4
3
6
5
8
7
10
9
我想问的是i +=2这个语句应该是对i进行了重新赋值了吧,在下一次循环时为什么不是应用重新赋值过后的i参与循环,而是按照range预订好0-10循环呢?搞不明白,希望高人指点
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-5-24 22:42:13 | 显示全部楼层
你希望的结果是怎么样的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-25 07:45:06 | 显示全部楼层
~风介~ 发表于 2015-5-24 22:42
你希望的结果是怎么样的?

只是我觉得按照这个编程,结果应该是
2
4
6
8
在第一次循环之后,i难道不是编程2了吗?为什么又从1开始的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-25 11:42:37 | 显示全部楼层
  1. for i in range(10):
  2.         print ('id: ',id(i))
  3.         if i%2!=0:
  4.                 print ('last:%d'%i)
  5.                 print ('last id: ',id(i))
  6.                 continue
  7.         i += 2
  8.         print ('next:%d'%i)
  9.         print ('next id: ',id(i))
复制代码

++++++
  1. >>>
  2. id:  1469889944
  3. next:2
  4. next id:  1469889976
  5. id:  1469889960
  6. last:1
  7. last id:  1469889960
  8. id:  1469889976
  9. next:4
  10. next id:  1469890008
  11. id:  1469889992
  12. last:3
  13. last id:  1469889992
  14. id:  1469890008
  15. next:6
  16. next id:  1469890040
  17. id:  1469890024
  18. last:5
  19. last id:  1469890024
  20. id:  1469890040
  21. next:8
  22. next id:  1469890072
  23. id:  1469890056
  24. last:7
  25. last id:  1469890056
  26. id:  1469890072
  27. next:10
  28. next id:  1469890104
  29. id:  1469890088
  30. last:9
  31. last id:  1469890088
  32. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-25 11:43:48 | 显示全部楼层
i += 2 之后id不同了, 就是说这个i不是之前的i了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-25 12:04:39 | 显示全部楼层
~风介~ 发表于 2015-5-25 11:43
i += 2 之后id不同了, 就是说这个i不是之前的i了~

非常感谢你的耐心解答,你讲解的我明白了,但我现在有点担心以后再遇到类似情况不知道该如何区分,也许是我现在初学还有好多东西没接触到的原因吧,继续学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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无法造成影响。请前辈指教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

随便你怎么想,结果就这样~

评分

参与人数 1荣誉 +5 鱼币 +10 贡献 +5 收起 理由
怡静 + 5 + 10 + 5 谢谢风介耐心解答!

查看全部评分

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

使用道具 举报

发表于 2015-6-7 22:31:15 From FishC Mobile | 显示全部楼层
我这个for看了三遍了都还没明白呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 15:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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