Python线性搜索问题:if-else分支重复输出求助
修正线性搜索的循环逻辑问题
你的问题核心是错误地将「未找到」的提示放在了循环内部,导致每遍历一个不匹配的元素就输出一次错误信息。下面是修正后的实现思路和代码:
问题分析
原错误代码的逻辑大致如下,这也是导致问题的根源:
names = [input() for _ in range(10)] target = input("Enter target name: ") for i in range(len(names)): if names[i] == target: print(f"Found at position {i}") else: print("Name not found.")
这种写法会在每次循环遇到不匹配的名字时就输出错误,哪怕后面找到了目标,前面已经输出了多次「Name not found.」。
修正方案
通过一个标志变量记录是否找到目标,仅在整个循环结束后,确认没有匹配项时才输出一次错误信息:
# 输入10个名字创建列表 names = [] for _ in range(10): name = input("请输入一个名字:") names.append(name) # 输入要搜索的目标名字 target_name = input("请输入要搜索的目标名字:") # 初始化标志,标记是否找到目标 is_found = False # 遍历列表执行线性搜索 for idx, name in enumerate(names): if name == target_name: print(f"找到目标,位置为:{idx}") is_found = True break # 找到后立即跳出循环,无需继续遍历 # 循环结束后判断是否找到 if not is_found: print("未找到目标名字。")
关键改进点
- 使用
enumerate()函数直接获取元素的索引和值,比range(len(names))更简洁易读 - 用
is_found标志变量跟踪搜索状态,避免循环内重复输出错误信息 - 找到目标后用
break跳出循环,减少不必要的遍历操作
内容的提问来源于stack exchange,提问作者Uchhashi
相关产品推荐
相关产品推荐

