You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS61A实验1:两段Python while循环代码运行逻辑疑问

CS61A实验1代码疑问解答

问题1:为何是无限循环?

Python中,while循环的判断逻辑是:非零数值会被视为布尔值True,只有数值0会被视为False,循环仅当条件为False时终止。

看这段代码:

>>> positive = 28
>>> while positive:
...    print("positive?")
...    positive -= 3

我们一步步看positive的变化:
28 → 25 → 22 → ... → 1 → -2 → -5 → -8 → ...
每次减3后,positive永远不会等于0(28除以3余1,之后减3只会得到1、-2、-5这类非零值),所以while的条件始终为True,循环会无限执行下去。

你提到的“只要有值就会执行”不够准确,核心是非零数值在布尔判断中为真,零才会让循环停止。

问题2:为何打印-12、-9、-6后终止?

同样基于“非零为True,零为False”的规则,我们逐次拆解循环过程:
初始值:positive = -9,negative = -12

  1. 第一次循环:

    • negative = -12(非零,条件成立),进入循环
    • positive = -9(非零,if条件成立),打印-12
    • 更新变量:positive = -9 + 3 = -6,negative = -12 + 3 = -9
  2. 第二次循环:

    • negative = -9(非零,条件成立),进入循环
    • positive = -6(非零,if条件成立),打印-9
    • 更新变量:positive = -6 + 3 = -3,negative = -9 + 3 = -6
  3. 第三次循环:

    • negative = -6(非零,条件成立),进入循环
    • positive = -3(非零,if条件成立),打印-6
    • 更新变量:positive = -3 + 3 = 0,negative = -6 + 3 = -3
  4. 第四次循环:

    • negative = -3(非零,条件成立),进入循环
    • positive = 0(零,if条件不成立),不打印
    • 更新变量:positive = 0 + 3 = 3,negative = -3 + 3 = 0
  5. 第五次循环判断:

    • negative = 0(零,条件不成立),循环终止

所以最终只会打印-12、-9、-6三次,之后循环停止。

内容的提问来源于stack exchange,提问作者cleochan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:35:13