鱼C论坛

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

[已解决]关于for循环

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

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

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

x
member = ['a', 80, 'b', 90, 'c', 100 ]
i=0
for i in range(len(member)):
    print(member[i],member[i+1])
    i+=2

我的目标是按顺序出来“a 80”这样的三行,但是用上面那个代码会出现下面的情况
a 80
80 b
b 90
90 c
c 100
然后带一句报错

是因为for循环中途不能改变变量的值吗(所以最后一句i+=2没用)?
最佳答案
2020-2-2 15:00:45
本帖最后由 SHRS23 于 2020-2-2 15:01 编辑

>你可以修改i的值,但每次循环之后for语句又会重新对i赋值,所以看起来是没用的,另外即使在C语言这种可以直接在循环体内修改循环变量的语言里也是不建议这么做的,可以改用while循环来实现修改循环变量的功能。

>另外你想实现的功能可以通过改变range()函数的参数实现。
试试这个代码:
member = ['a', 80, 'b', 90, 'c', 100 ]

for i in range(0, len(member), 2):
    print(member[i],member[i+1])

>还有一点是 i = 0 这个是没有必要的,i 的声明(定义)以及赋初值都是在循环语句 for i in xxxx 中完成的,这一点也是与C语言不同的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-2 15:00:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 SHRS23 于 2020-2-2 15:01 编辑

>你可以修改i的值,但每次循环之后for语句又会重新对i赋值,所以看起来是没用的,另外即使在C语言这种可以直接在循环体内修改循环变量的语言里也是不建议这么做的,可以改用while循环来实现修改循环变量的功能。

>另外你想实现的功能可以通过改变range()函数的参数实现。
试试这个代码:
member = ['a', 80, 'b', 90, 'c', 100 ]

for i in range(0, len(member), 2):
    print(member[i],member[i+1])

>还有一点是 i = 0 这个是没有必要的,i 的声明(定义)以及赋初值都是在循环语句 for i in xxxx 中完成的,这一点也是与C语言不同的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-2 15:03:23 | 显示全部楼层
试下下面的代码,基本上就能看出来i的变化了。i+=2确实没用,不会改变循环条件中i的值
member = ['a', 80, 'b', 90, 'c', 100 ]
i=0
for i in range(len(member)):
    print("这是第" + str(i) +"次循环")
    print("此时i的值:",i)
    print(member[i],member[i+1])
    i +=2
    print("i的最新值:",i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-2 15:46:43 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-2 15:49 编辑

for i in range(len(member)):
    print(member[ i ] , member[i+1])    # 当 i = len(member) - 1 的时候,member[i+1] 将导致下标越界
   
    在 for 循环中,循环变量只接受 for 语句的赋值,在循环体内对该变量的任何赋值均无效,所以,不要试图通过在循环中修改循环变量 i 以达到影响或控制循环的目的。如果真有此需要,那就不要使用 for 循环,用 while 更加合适 。
member = ['a', 80, 'b', 90, 'c', 100 ]
for i in range(0 , len(member) , 2):
    print(member[i],member[i+1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-2 15:48:38 | 显示全部楼层
i = 0 和 i += 2 这两句是没有必要的,因为 for 循环会自动对它更改。另外 for 循环哪里要改一下:
member = ['a', 80, 'b', 90, 'c', 100]
for i in range(0, len(member), 2):    # 步长为 2
    print(member[i], member[i + 1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 10:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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