LeetCode Two Sum变种问题:添加else分支后执行异常排查
问题原因及解决方法
你遇到的问题核心是else分支的缩进位置错误。如果把else和循环内的if放在同一缩进层级,每次循环时只要当前元素不满足条件,就会立刻执行else分支返回提示,直接终止函数,根本不会继续遍历后续元素。比如你输入[2,3,4,6,7,8]和目标值10时,第一次循环检查i=1(元素3),2+3≠10,就会触发else返回,完全没机会走到i=5(元素8)的判断。
错误代码示例
def two_sum(nums, target): for i in range(1, len(nums)): if nums[0] + nums[i] == target: return [0, i] else: return "找不到符合条件的元素"
正确写法
正确的做法是让else和for循环对齐(或者直接在循环结束后写返回语句),这样只有当整个循环完整遍历完所有元素,且没有找到符合条件的元素时,才会执行返回提示的逻辑:
写法1:用for-else搭配
def two_sum(nums, target): for i in range(1, len(nums)): if nums[0] + nums[i] == target: return [0, i] else: return "找不到符合条件的元素"
写法2:循环结束后直接返回
def two_sum(nums, target): for i in range(1, len(nums)): if nums[0] + nums[i] == target: return [0, i] return "找不到符合条件的元素"
补充说明
Python里的for-else是特殊语法:else分支只会在循环正常执行完毕(没有被break、return等语句中断)时触发。把else和for对齐后,只有遍历完所有元素都没找到符合条件的,才会进入else分支。
内容的提问来源于stack exchange,提问作者Sudipto
相关产品推荐
相关产品推荐

