含if语句的while循环执行逻辑疑问:为何输出5次Hello?
为什么这段Python代码会输出5次"Hello"?
先看你提供的代码:
x = 5 while x > 0: x -= 1 if x == 5: print("Friendly Fires") print("Hello")
我们一步步拆解循环的执行流程,就能明白原因:
初始值 x = 5,进入while x > 0的判断逻辑:
- 第一次循环:
x > 0(5>0)成立,先执行x -= 1,x变为4;判断x ==5不成立,打印"Hello"。 - 第二次循环:
x >0(4>0)成立,x减1变为3;判断不成立,打印"Hello"。 - 第三次循环:
x >0(3>0)成立,x减1变为2;打印"Hello"。 - 第四次循环:
x >0(2>0)成立,x减1变为1;打印"Hello"。 - 第五次循环:
x >0(1>0)成立,x减1变为0;判断x==5不成立,打印"Hello"。
当第五次循环的代码执行完毕后,回到while的条件判断:此时x=0,0>0不成立,循环才会退出。
核心点在于:while循环是先判断条件是否满足,再执行循环体内部的代码。第五次进入循环时,x的值是1,满足x>0的条件,所以不管执行循环体后x变成什么,这次循环里的print("Hello")都会被执行。
另外你提到的print("Friendly Fires")永远不会触发,这个分析是对的——第一次进入循环x就从5减到了4,之后x只会越来越小,永远不可能等于5。
内容的提问来源于stack exchange,提问作者Kotor2
相关产品推荐
相关产品推荐

