兔塔 发表于 2020-2-2 14:39:54

关于for循环

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

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

是因为for循环中途不能改变变量的值吗(所以最后一句i+=2没用)?

SHRS23 发表于 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,member)


>还有一点是 i = 0 这个是没有必要的,i 的声明(定义)以及赋初值都是在循环语句 for i in xxxx 中完成的,这一点也是与C语言不同的。

redforce 发表于 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,member)
    i +=2
    print("i的最新值:",i)

jackz007 发表于 2020-2-2 15:46:43

本帖最后由 jackz007 于 2020-2-2 15:49 编辑

for i in range(len(member)):
    print(member[ i ] , member)    # 当 i = len(member) - 1 的时候,member 将导致下标越界
   
    在 for 循环中,循环变量只接受 for 语句的赋值,在循环体内对该变量的任何赋值均无效,所以,不要试图通过在循环中修改循环变量 i 以达到影响或控制循环的目的。如果真有此需要,那就不要使用 for 循环,用 while 更加合适 。
member = ['a', 80, 'b', 90, 'c', 100 ]
for i in range(0 , len(member) , 2):
    print(member,member)

zltzlt 发表于 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, member)
页: [1]
查看完整版本: 关于for循环