鱼C论坛

 找回密码
 立即注册
查看: 1457|回复: 5

[已解决]continue 和 for 语句中 i 的取值问题,谢谢前辈

[复制链接]
发表于 2020-6-27 16:27:12 | 显示全部楼层 |阅读模式

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

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

x
for i in range(10):
    if i%2 != 0:
        print(i)
        continue
    i += 2
    print(i)
当i为偶数时,e.x. i取0,那么i +=2 后,i 就为2了。此时,返回循环条件执行for 语句时,i的取值到底是多少? (取1?还是取2?)或者说,是不管continue后面的i+=2使 i 增长成几,只要跳出再次执行for循环,i 都按顺序在(0,10)范围内依次取值? 为啥 i 不会按照 i = i +2的新值来做for循环?
最佳答案
2020-6-27 16:30:05
本帖最后由 Twilight6 于 2020-6-27 16:36 编辑



for 循环每次都会给 i 赋值,会把你之前 i 的值全部覆盖,按照 for 循环原本的顺序来,所以这里 for 循环赋值 i 不受你 循环内影响

就算你 i += 2 了,当 for 循环开始下一次的循环,首先就是对 i 的重新赋值,就把你之前 i 的值给覆盖了

简单来说 for 循环是把你 range 迭代器里面的元素拿出来 , range 函数是产生一个整数迭代器,你这里 range(10) 就是产生了一个 0~9 的迭代器

每次循环都按顺序把 0~9 的元素拿出来,重新给 i 赋值,i 在循环内部 +2 并不会影响 range 迭代器里面原有的数值,怎么会按照 +2 后的 i 循环呢?是吧~


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-27 16:30:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-6-27 16:36 编辑



for 循环每次都会给 i 赋值,会把你之前 i 的值全部覆盖,按照 for 循环原本的顺序来,所以这里 for 循环赋值 i 不受你 循环内影响

就算你 i += 2 了,当 for 循环开始下一次的循环,首先就是对 i 的重新赋值,就把你之前 i 的值给覆盖了

简单来说 for 循环是把你 range 迭代器里面的元素拿出来 , range 函数是产生一个整数迭代器,你这里 range(10) 就是产生了一个 0~9 的迭代器

每次循环都按顺序把 0~9 的元素拿出来,重新给 i 赋值,i 在循环内部 +2 并不会影响 range 迭代器里面原有的数值,怎么会按照 +2 后的 i 循环呢?是吧~


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-27 16:34:59 | 显示全部楼层
本帖最后由 heidern0612 于 2020-6-27 16:37 编辑

看你描述的头晕。

整段代码的意思是,在0到10范围内,如果i%2不为0,就打印i;否则的话i就自增2,打印i出来,就这么简单的逻辑,哪有你想那么复杂。

第一次循环,i取0,因为i%2等于0,所以自增2,打印2出来;

第二次循环,i取1,因为i%2不等于0,所以打印1,continue下一次循环;

第三次循环,i取2,因为i%2等于0,所以自增2,打印4出来,……

以下类推,for循环里的i不随着下面计算里的i变化,是因为你for循环定义的时候,next迭代器的次数就已经生成了,所以for循环的次数是不变的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-6-27 17:25:47 | 显示全部楼层
for循环 i从range生成的迭代器(你这里是0到9的列表)中顺序取值,然后执行for语句块的内容,
期间修改 i 值无所谓,反正每次循环 i 都会从之前生成的迭代器中取值,所以下面执行i+=2修改i的值不影响循环的下次执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-27 22:59:46 | 显示全部楼层
豁然开朗。非常感谢各位大神的热心帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-29 15:59:43 | 显示全部楼层
heidern0612 发表于 2020-6-27 16:34
看你描述的头晕。

整段代码的意思是,在0到10范围内,如果i%2不为0,就打印i;否则的话i就自增2,打印i出 ...

最佳答案太专业了   还是你这个明了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 07:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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