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
第一次循环:
negative = -12(非零,条件成立),进入循环positive = -9(非零,if条件成立),打印-12- 更新变量:
positive = -9 + 3 = -6,negative = -12 + 3 = -9
第二次循环:
negative = -9(非零,条件成立),进入循环positive = -6(非零,if条件成立),打印-9- 更新变量:
positive = -6 + 3 = -3,negative = -9 + 3 = -6
第三次循环:
negative = -6(非零,条件成立),进入循环positive = -3(非零,if条件成立),打印-6- 更新变量:
positive = -3 + 3 = 0,negative = -6 + 3 = -3
第四次循环:
negative = -3(非零,条件成立),进入循环positive = 0(零,if条件不成立),不打印- 更新变量:
positive = 0 + 3 = 3,negative = -3 + 3 = 0
第五次循环判断:
negative = 0(零,条件不成立),循环终止
所以最终只会打印-12、-9、-6三次,之后循环停止。
内容的提问来源于stack exchange,提问作者cleochan
相关产品推荐
相关产品推荐

