鱼C论坛

 找回密码
 立即注册
查看: 3465|回复: 1

[已解决]循环语句while课后作业的问题

[复制链接]
发表于 2022-12-14 10:56:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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自身进行减值操作,为何效果不同???
最佳答案
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 就没有满足,就退出了循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 就没有满足,就退出了循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表