线性搜索(Linear search)算法Python实现部分正确性问题求助
线性搜索程序问题排查与修正
问题原因
你的代码逻辑存在关键错误:else分支的return语句被放在了for循环内部。这导致程序只检查列表的第一个元素就终止:
- 若第一个元素等于目标值,返回索引0,结果正确;
- 若第一个元素不等于目标值,直接执行
return "not in list",循环直接结束,完全不会遍历列表后续的元素。
这就是为什么只有目标值为1(列表第一个元素)时能得到正确结果,其余情况都直接返回"不存在"的原因。
修正方案
把return "not in list"移到for循环外部,确保程序遍历完整个列表所有元素后,确认目标不存在才返回提示。另外建议不要用list作为变量名,它是Python内置类型,容易引发混淆,换成arr这类名称更合适。
修正后的代码:
def linsearch(arr, target): for i in range(len(arr)): if arr[i] == target: return i # 遍历完所有元素未找到目标才执行 return "not in list" list1 = [1,2,3,4,5] print(linsearch(list1, 1)) # 输出0 print(linsearch(list1, 3)) # 输出2 print(linsearch(list1, 6)) # 输出"not in list"
内容的提问来源于stack exchange,提问作者Mayank Singh
相关产品推荐
相关产品推荐

