为何输入quit后Python while循环未终止反而执行else分支?
输入'quit'却执行else分支的原因解析
咱们直接看代码执行顺序就能明白,假设你的代码结构是这样的:
command = "" while command != 'quit': command = input("请输入指令:") if command == 'start': print("汽车启动!") elif command == 'stop': print("汽车熄火!") else: print("Sorry, I do not understand that!")
当你输入'quit'时,执行流程是这样的:
- 第一步:
command被赋值为'quit' - 第二步:进入if-elif判断,因为既不是'start'也不是'stop',直接触发else分支,输出那句不懂的提示
- 第三步:当前循环体内的代码全部执行完毕,才会去检查
while的循环条件command != 'quit'——这时候条件不成立,循环才终止
核心逻辑就是:循环条件是用来判断要不要开启下一轮循环的,不是在循环体内输入指令后立刻终止当前循环。你输入'quit'的时候已经进入了当前这轮循环,所以必须把循环体内的所有逻辑走完,之后才会停止循环。
原来的代码里有elif command == 'quit'的分支,输入quit时会命中这个分支,自然不会走到else;现在删掉这个分支,quit就会被当成无效指令触发else,之后才结束循环。
内容的提问来源于stack exchange,提问作者Shreyasi Ghatak
相关产品推荐
相关产品推荐

