Python列表查找目标值返回错误 循环未正常迭代原因咨询
问题根因分析
函数返回逻辑位置错误,导致循环根本没完成迭代就提前终止了:
- 传入测试列表
x = [1,9,9,9,9,2,3,4,5,6,7]时,for循环第一次运行取到的索引是0,对应元素值为1,不满足nums[i] == 2的判断条件 - 代码直接进入else分支执行
return False,Python中只要函数执行到return语句就会立刻结束运行,后续的循环迭代完全不会执行,排在列表后面的元素2根本没有被检查的机会 - 函数末尾写的
pass是永远不会被执行的无效代码,因为前面的if/else分支已经触发return退出了函数。
原有问题代码
def consec_123(nums): for i in range(0, len(nums)): if nums[i] == 2: return True else: return False pass
修正方案
把return False的逻辑移到循环外部,等遍历完列表所有元素、确认没有找到目标值之后再返回False:
def consec_123(nums): for i in range(len(nums)): if nums[i] == 2: return True # 全部元素检查完都没找到2,才返回False return False
更简便的实现可以直接用Python内置的成员判断语法,不需要手动写循环:def consec_123(nums): return 2 in nums
内容的提问来源于stack exchange,提问作者shivam tuli
相关产品推荐
相关产品推荐

