lzb1001 发表于 2023-3-17 09:17:27

缩进不同导致返回结果不同,似懂非懂,哪位大神帮忙解析指点下

# p4_5.py

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

-----------------------------


# p4_5_1.py

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

isdkz 发表于 2023-3-17 09:23:42

这两个代码片段的主要区别在于i += 2以及print(i)的缩进。因此,这两个代码片段在执行过程中的行为是不同的。让我们一起来分析这两段代码。

p4_5.py

这段代码中,当i在0到9之间时,循环进行以下操作:

1、如果i不是偶数(即i % 2 != 0),打印i的值,然后通过continue跳过本次循环的剩余部分,进入下一次循环。

2、如果i是偶数,执行i += 2操作,即将i的值增加2,然后打印i的新值。
代码执行结果如下:

2
1
4
3
6
5
8
7
10

p4_5_1.py

这段代码中,当i在0到9之间时,循环进行以下操作:

1、如果i不是偶数(即i % 2 != 0),打印i的值,然后通过continue跳过本次循环的剩余部分,进入下一次循环。

请注意,由于continue后面的代码块(i += 2和print(i))是在if语句内部的,因此当满足i % 2 != 0条件时,它们将不会被执行。

2、如果i是偶数,本次循环不会执行任何操作,因为没有缩进与if语句平行的代码。
代码执行结果如下:

1
3
5
7
9

总之,由于缩进的不同,两段代码执行的操作和输出结果也不同。p4_5.py会打印偶数+2和奇数,而p4_5_1.py只会打印奇数。

所以跟 continue 同一个缩进级别的语句放在 continue 的后面是没有任何意义的

lzb1001 发表于 2023-3-17 11:17:48

isdkz 发表于 2023-3-17 09:23
这两个代码片段的主要区别在于i += 2以及print(i)的缩进。因此,这两个代码片段在执行过程中的行为是不同的 ...

也就是说:

比如像p4_5_.py这样跟 continue 同一个缩进级别的语句放在 continue 的后面是没有任何意义的

对吧?

isdkz 发表于 2023-3-17 11:32:48

lzb1001 发表于 2023-3-17 11:17
也就是说:

比如像p4_5_.py这样跟 continue 同一个缩进级别的语句放在 continue 的后面是没有任何意义 ...

对的,因为不会被执行,所以放在那里也没有意义

woshizhangpengp 发表于 2023-3-17 14:46:50

是不是应该i+=1
页: [1]
查看完整版本: 缩进不同导致返回结果不同,似懂非懂,哪位大神帮忙解析指点下