hyl_0718 发表于 2020-7-13 17:00:26

求解不能得到所需结果原因

为输出以下结果:
'小甲鱼',88
'黑夜',90
...

小程序:

member=['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
num=len(member)
for i in range(num):
    print(member,member)
    i+=2

运行结果:
小甲鱼 88
88 黑夜
黑夜 90
90 迷途
迷途 85
85 怡静
怡静 90
90 秋舞斜阳
秋舞斜阳 88

求解错在哪里?

qiuyouzhi 发表于 2020-7-13 17:05:34

for 会自己改变i的值的,所以不需要i += 2.
还有,去掉i += 2后,要把range的步长设置为2才行。
member=['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
num=len(member)
for i in range(0, num, 2):
    print(member,member)

sunrise085 发表于 2020-7-13 17:12:26

for循环,会在开始的时候生成一个遍历列表,在循环过程中修改i不会影响对该列表的遍历
这里for i in range(num)就是i从列表中取值,在循环体内修改i没有用,下一次循环会接着从列表中取下一个值。
所以需要的是修改遍历列表,把range步长修改为2,for i in range(0,num,2)这样便利列表就变成了
member=['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
num=len(member)
for i in range(0, num, 2):
    print(member,member)

MIKU神仙教主 发表于 2020-7-13 18:11:13

本帖最后由 MIKU神仙教主 于 2020-7-13 18:13 编辑

或者可以用求余取偶数项,每次遍历只在 i = 0,2,4,6这些偶数时进行打印。
member=['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
num=len(member)

for i in range(num):
    if i%2 == 0:
      print(member,member)
      i+=2


hyl_0718 发表于 2020-7-13 22:16:18

qiuyouzhi 发表于 2020-7-13 17:05
for 会自己改变i的值的,所以不需要i += 2.
还有,去掉i += 2后,要把range的步长设置为2才行。

谢谢

hyl_0718 发表于 2020-7-13 22:17:22

谢谢各位赐教 !
页: [1]
查看完整版本: 求解不能得到所需结果原因