鱼C论坛

 找回密码
 立即注册
查看: 1048|回复: 4

[已解决]i+=2 为什么对循环的i无影响?

[复制链接]
发表于 2019-4-24 21:58:08 | 显示全部楼层 |阅读模式

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

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

x
for i in range(10):
    if i%2 != 0:
        print(i)
        continue
    i += 2
    print(i)


i += 2 为什么对 for i in range 里面的 i 无影响 ?
最佳答案
2019-4-24 22:27:06
本帖最后由 jackz007 于 2019-4-24 23:53 编辑

      for i in range ... 中的循环变量 i 对循环体来说是只读的,就是说,这个变量只接受来自 for 语句的赋值,在循环过程中对此变量的修改不会影响到下一次循环的赋值,更不会影响到循环。

      如果想通过 i 来控制循环,应该使用 while,它可以接受来自循环体对循环变量的修改,进而控制和影响到最终循环次数。
  1. i = 0
  2. while i < 10:
  3. . . . . . .
  4.     i += 2
  5. . . . . . .
复制代码

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

使用道具 举报

发表于 2019-4-24 22:12:02 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-24 22:19 编辑

因为i会被range重新赋值,在迭代过程中,这两个i不断被重新赋值,并不是同一个i。即便是:
  1. for i in range(10)
复制代码
中的i,每次都已不是原来的i
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-24 22:26:57 | 显示全部楼层
本帖最后由 菜鸟W 于 2019-4-24 22:29 编辑

举例:
首次运行,i=0,i+=2,i就是2
然后,i又被range赋值为1,所以i是1,i+=2,i就是3
然后,i被range赋值为2
每一次执行for循环,i就首先被range赋值了一个range的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-24 22:27:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-4-24 23:53 编辑

      for i in range ... 中的循环变量 i 对循环体来说是只读的,就是说,这个变量只接受来自 for 语句的赋值,在循环过程中对此变量的修改不会影响到下一次循环的赋值,更不会影响到循环。

      如果想通过 i 来控制循环,应该使用 while,它可以接受来自循环体对循环变量的修改,进而控制和影响到最终循环次数。
  1. i = 0
  2. while i < 10:
  3. . . . . . .
  4.     i += 2
  5. . . . . . .
复制代码

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

使用道具 举报

发表于 2019-4-25 17:51:20 | 显示全部楼层
本帖最后由 肥^o^帅 于 2019-4-25 18:00 编辑

互不相干,你把第二个i换成另一个字母表示就好理解了,毕竟Python变量不用定义,直接赋值
for循环是计数循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-14 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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