为什么Python for循环添加else分支后会输出多个结果?
Python代码逻辑问题分析
核心问题点
- 分支层级错误:你将
else分支放在了for循环内部、与if平级的位置,因此每遍历1个列表元素就会执行1次条件判断,只要当前元素不匹配就会输出wrong,自然会出现4次输出的情况。 - 缺少匹配终止逻辑:就算成功匹配到目标字符,循环也不会停止,会继续遍历完列表剩余的3个元素,这3次遍历都会触发
else分支输出wrong,也就是你遇到的匹配后多输出3次错误的现象。
修正方案(保留else分支)
Python支持for-else语法,else分支与for平级,仅当循环全程没有被break终止时才会执行,调整后的代码如下:
a = ["w", "u", "i", "r"] count = 0 d = input("choose: ") for c in a: count += 1 if d == c: print(count) break # 匹配成功后立刻终止循环,避免多余遍历 else: print("wrong")
修正后逻辑说明
- 输入字符存在于列表中时,匹配到对应元素后输出位置,触发
break终止循环,不会执行else分支,无多余输出 - 输入字符不在列表中时,循环遍历完所有元素都没有触发
break,最后执行1次else分支输出wrong,符合预期。
内容的提问来源于stack exchange,提问作者Emmanuel C. O Peters
相关产品推荐
相关产品推荐

