Python while循环逻辑疑问:条件为x>=1为何仍输出x=0的结果
问题原因解答
核心逻辑:Python 的 while 循环的判断时机是每次进入循环体之前,只要判断时条件成立,就会完整执行本次循环体内的所有代码,循环体内修改的变量值不会中断本次循环,只会影响下一轮的条件判断。
逐轮执行过程拆解
我们按照代码的实际执行顺序逐轮梳理:
- 初始值:
x = 5,y = 4
- 第一轮判断:
x=5 >=1成立,进入循环体- 执行
x = x-1→ x变为4 - 执行
y = y*2→ y变为8 - 打印x=4、y=8
- 执行
- 第二轮判断:
x=4 >=1成立,进入循环体- x变为3,y变为16,打印对应结果
- 第三轮判断:
x=3 >=1成立,进入循环体- x变为2,y变为32,打印对应结果
- 第四轮判断:
x=2 >=1成立,进入循环体- x变为1,y变为64,打印对应结果
- 第五轮判断:
x=1 >=1成立(你之前的误解就是漏了这次判断,认为x到1就不会进循环了),进入循环体- x变为0,y变为128,打印对应结果
- 第六轮判断:
x=0 >=1不成立,循环终止
符合你预期的修改方案
如果希望循环到x=1、y=64就停止,只需要调整变量修改和打印的顺序即可:
x = 5 y = 4 while x >=1: print ("x is", x) print ("y is", y) x = x - 1 y = y*2
或者也可以不调整原有代码顺序,直接将循环条件修改为while x > 1。
内容的提问来源于stack exchange,提问作者Eugene Lucas
相关产品推荐
相关产品推荐

