鱼C论坛

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

[已解决]for

[复制链接]
发表于 2020-9-9 14:53:34 | 显示全部楼层 |阅读模式

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

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

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

这段循环 i += 2中 i 的值一直在变,为什么for后边 i 的值没有随之改变?
最佳答案
2020-9-9 15:01:27
本帖最后由 sunrise085 于 2020-9-9 15:02 编辑

for循环,是先生成一个可迭代序列, i 从该序列中逐个取值,然后执行下面的语句
比如你的这个程序,for循环开始的时候,range(10)生成的序列是(0,1,2,3,4,5,6,7,8,9),然后i从这里面取值,去执行下面的一句。
第一次,i=0,执行下面的语句,跳过if,执行i+=2,之后 i=2,打印 i
第二次,i=1,执行下面的语句,执行if,打印 i
第三次,i=2,执行下面的语句,跳过if,执行i+=2,之后 i=4,打印 i
……

for循环在循环体内修改 i 的值,不影响下次循环时 i 的取值


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

使用道具 举报

发表于 2020-9-9 14:56:33 | 显示全部楼层
你这样写容易混淆
每次循环,i都重新赋值为range循环的变量值了,所以下面i +=2执行了也没用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-9 14:59:00 | 显示全部楼层
疾风怪盗 发表于 2020-9-9 14:56
你这样写容易混淆
每次循环,i都重新赋值为range循环的变量值了,所以下面i +=2执行了也没用

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

使用道具 举报

发表于 2020-9-9 15:00:23 | 显示全部楼层
for i in range(10)这个语句内的i永远是从0到9的啊
下面对应+2后打印的那个i ,是在每次经判断后不符合if条件的那个
而循环外部的i没有变,循环到几就是几
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-9 15:01:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-9 15:02 编辑

for循环,是先生成一个可迭代序列, i 从该序列中逐个取值,然后执行下面的语句
比如你的这个程序,for循环开始的时候,range(10)生成的序列是(0,1,2,3,4,5,6,7,8,9),然后i从这里面取值,去执行下面的一句。
第一次,i=0,执行下面的语句,跳过if,执行i+=2,之后 i=2,打印 i
第二次,i=1,执行下面的语句,执行if,打印 i
第三次,i=2,执行下面的语句,跳过if,执行i+=2,之后 i=4,打印 i
……

for循环在循环体内修改 i 的值,不影响下次循环时 i 的取值


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 18:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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