|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大佬:
请教一下第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自身进行减值操作,为何效果不同???
在 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 就没有满足,就退出了循环。
|
|