LEEFEI571 发表于 2022-12-14 10:56:46

循环语句while课后作业的问题

各位大佬:

请教一下第016讲:了不起的分支和循环(III)中的课后作业

3. 请问下面代码是否会构成一个死循环?
x = 9
while x:
    print(x)
    x -= 3
    x += 1

给出的答案解释为:循环的条件是 x,那么在这段代码中,只有当 x 的值为 0,循环才能退出。循环体的内容除了打印 x 的值,就是对 x 进行减 2 的操作(先减 3 再加 1)。由于初始值是 9,每执行一次循环减 2,它这辈子也不可能等于 0 的,所以是一个死循环。

根据上述答案解释,该代码等同于如下:
x = 9
while x:
    print(x)
    x -= 2
该代码运行时为死循环.

问题:如果把该代码体内的 x-= 2 改为 x-= 1,即代码如下
x = 9
while x:
    print(x)
    x -= 1
则该代码运行时则不再是死循环,请问都是对x自身进行减值操作,为何效果不同???

tommyyu 发表于 2022-12-14 11:06:32

在 Python 中,非 0 的整数都是真,0 就是假。所以,while x: 等价于 while x != 0: 。

第一个程序中,x 的初始值是 9,每次递减 2,x 的值就是 9、7、5、3、1、-1 ...,永远都不是 0,所以程序的判断条件 while x != 0 一直为真。
第二个程序中,x 的初始值是 9,每次递减 2,x 的值就是 9、8、7、6、5、4、3、2、1、0,在一次循环中变成了 0,程序条件 while x != 0 就没有满足,就退出了循环。
页: [1]
查看完整版本: 循环语句while课后作业的问题