shenche123 发表于 2020-6-29 16:04:50

python课程p9中关于 i += 2 怎么理解?

完全没有基础的我看到课程最后的
for i in range(10):
    if i%2 != 0:
      print(i)
      continue

    i += 2
    print(i)
结果为:
3
1
5
3
7
5
9
7
11
9

感到茫然。。
i += 2是什么?我查到说是i = i +2。然而还是不能理解。为什么左右都有 i 。。。。。

qiuyouzhi 发表于 2020-6-29 16:12:06

本来就是呀,比如你长大了两岁,你现在的年龄=两年前你的年龄+2,等号两边都有"你"啊

Twilight6 发表于 2020-6-29 16:12:12

i += 2是什么?我查到说是i = i +2。然而还是不能理解。为什么左右都有 i 。。。。。

Python 中赋值是先计算等号右边的结果,然后赋值给左边的,这里 i += 2 就是 i = i + 2

左边的 i 是重新接收数值用的 ,也就是被赋值的,右边的 i 是当前的值

举个例子 假设   i = 1那么i += 1就是i = i + 1 因为 i 等于 1那么 -> i = 1 + 1新的 i 就等于 2

叶小贤 发表于 2020-6-29 16:12:36

第一次循环i=0 , 0%2 == 0 , 没有进入判断,所以 i += 2也就是 i = 0+2
第二次循环i=1 , 1%2 != 0 , 进入判断, print(i)
第三次循环i=2 , 2%2 == 0 , 没有进入判断,所以 i += 2也就是 i = 2+2

叶小贤 发表于 2020-6-29 16:13:50

结果因该是 2 1 4 怎么会是 3 1 5

shenche123 发表于 2020-6-29 16:24:45

叶小贤 发表于 2020-6-29 16:13
结果因该是 2 1 4 怎么会是 3 1 5

你是对的,我之前为了试验,改成i += 3 了~ 发帖子的时候又贴了2

shenche123 发表于 2020-6-29 16:30:47

叶小贤 发表于 2020-6-29 16:12
第一次循环i=0 , 0%2 == 0 , 没有进入判断,所以 i += 2也就是 i = 0+2
第二次循环i=1 , 1%2 != 0 , ...

理解了,谢谢!所以其实问题在continue, 意思是continue之前如果成立直接print(i), 如果不成立 执行下面的i += 2,结果就是(0+2),1,(2+2),3,(4+2)。。。。。

shenche123 发表于 2020-6-29 16:31:27

Twilight6 发表于 2020-6-29 16:12
Python 中赋值是先计算等号右边的结果,然后赋值给左边的,这里 i += 2 就是 i = i + 2

左边的 i 是 ...

明白了,谢谢!

Twilight6 发表于 2020-6-29 16:38:39

shenche123 发表于 2020-6-29 16:31
明白了,谢谢!

客气了~~~{:10_297:}
页: [1]
查看完整版本: python课程p9中关于 i += 2 怎么理解?