yaoyao20170404 发表于 2020-10-26 14:45:28

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

for i in range(10):
    if i%2 != 0:
      print(i)
    i += 2
    print(i)
为什么得出的数字排列是
2
1
3
4
3
5
6
5
7
8
7
9
10
9
11
是怎么得出来的呢??

笨鸟学飞 发表于 2020-10-26 15:04:53

本帖最后由 笨鸟学飞 于 2020-10-26 15:11 编辑

for i in range(10):#第1次循环i = 0 // i=1 // i=2
    if i%2 != 0:       #0%2等于0 // 1%2不等于0 // 等于0
      print(i)         #不打印 // 打印1 // 不打印
    i += 2             #i=2 // i=3 // i=4
    print(i)            #打印2 // 打印3 // 打印4

你的代码过程如上:我感觉你没理解for in循环的概念,以及对缩进理解还不透彻

for i in range(10):#1、循环开始,每次循环把右边序列的值依次赋值给i(第1次0,最后1次9),循环结束后跳转到与for语句齐平的代码处
    if ***               #2、条件分支,条件为真,或者非0值,则运行缩进处的代码
      *****         #缩进中的代码,条件为真,或者非0值,才运行
      *****         #缩进中的代码,条件为真,或者非0值,才运行
    *****               #注意看这个缩进与if齐平,因此不管if条件分支怎么走,在if语句执行完后,这行都运行。而且这行在forin循环内,执行完后跳转回循环头部继续执行下一次循环
*****   #循环结束后才执行这~~~注意看对齐

yaoyao20170404 发表于 2020-10-26 15:24:28

笨鸟学飞 发表于 2020-10-26 15:04
你的代码过程如上:我感觉你没理解for in循环的概念,以及对缩进理解还不透彻

哦,就是其中1 . 3 .5 .7 .9是第一个i%2!=0的结果,其他的是i+=2的结果对吧

笨鸟学飞 发表于 2020-10-26 15:33:48

yaoyao20170404 发表于 2020-10-26 15:24
哦,就是其中1 . 3 .5 .7 .9是第一个i%2!=0的结果,其他的是i+=2的结果对吧

对的

yaoyao20170404 发表于 2020-10-26 15:40:13

笨鸟学飞 发表于 2020-10-26 15:33
对的

明白了,感谢
页: [1]
查看完整版本: for i in range(10): if i%2 != 0: print(i) i += 2 print(i)