为何Python中if条件为True时else分支却被执行?求解答
代码执行流程解析
先把代码再贴一遍:
string = "aabbcc" count = 3 while True: if string[0] == 'a': string = string[2:] elif string[-1] == 'b': string = string[:2] else: count += 1 break print(string) print(count)
咱们一步步走一遍执行过程:
- 初始状态:
string = "aabbcc",count = 3 - 第一次进入
while True循环:- 检查
if条件:string[0]是'a',条件成立,执行string = string[2:],此时string变成"bbcc" - 这次循环没有触发
break,所以会重新进入循环
- 检查
- 第二次进入
while True循环:- 检查
if条件:string[0]是'b',不满足 - 接着检查
elif条件:string[-1]是'c',不是'b',也不满足 - 所以进入
else分支:count加1变成4,然后执行break跳出循环
- 检查
- 最后输出
string的值"bbcc"和count的值4
你之前误以为是第一次if执行后直接走到else,其实是第一次循环只执行了if分支,循环继续;第二次循环时if和elif都不满足,才触发了else分支。
内容的提问来源于stack exchange,提问作者Ayush Kumar
相关产品推荐
相关产品推荐

