sue2612285 发表于 2020-6-4 11:43:21

想不懂为啥会这样?

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

输出答案:
2
1
4
3
6
5
8
7
10
9

for i in range(10):
    if i%2 != 0:
      print(i)
对于这部分代码我能理解,就是求余数,但是
continue
    i +=2
    print(i)这部分代码我就懵逼了,请大神为我解答下,谢谢。

BIO-张磊 发表于 2020-6-4 19:22:42

本帖最后由 BIO-张磊 于 2020-6-4 19:24 编辑

我来模拟下,代码执行过程
i = 0, i % 2 = 0 ,i + 2 = 2,print(i) ->2 , i = i +1
i = 1, i %2 != 0,print(i) -> 1, continue,i = i+1
i = 2, i % 2= 0,i + 2 = 4,print(i) -> 4, i = i +1
........
所以一旦执行continue,for循环内continue下面不执行

jia159753 发表于 2020-6-4 20:43:01

结果没毛病啊,
0%2=0,0+2=2,所以第一项为2
1%2 != 0 ,直接输出1
以此类推,continue后面的一样可以执行

_荟桐_ 发表于 2020-6-4 22:00:45

本帖最后由 _荟桐_ 于 2020-6-4 22:02 编辑

for i in range(10):
    if i%2 != 0:      # 如果i是奇数
      print(i)               # 打印i
      continue             # 继续遍历下一个数字,也就是不执行后边的代码
    i +=2                # 如果i是偶数,就 i += 2
    print(i)            # 然后打印出来(i+2)

# 总结:
# 奇数直接打印
# 偶数则要+2后打印


所以结果就是
0+2
1
2+2
3
4+2
5
6+2
7
8+2
9
页: [1]
查看完整版本: 想不懂为啥会这样?