如何实现find函数查找list中key的位置并解决无输出问题?
问题排查与修正
你的代码存在的几个问题
- 索引更新逻辑错误:你把
index += 1放在了if判断内部,只有找到匹配元素时才会递增索引,这会导致不匹配元素的位置完全被跳过,索引值根本无法正确对应列表的真实位置。 - 测试参数错误:你调用
find(my_list, 5),但你的测试列表my_list里根本没有数字5,自然不会有任何输出。 - 不符合需求要求:需求明确要求使用带index变量和range的for loop,但你直接遍历了列表元素,没有用range生成索引范围。
- 输出格式不符:预期输出是
Found {key} at position {index}的格式,你的代码只打印了索引值。
修正后的代码
def find(my_list, key): for index in range(len(my_list)): if my_list[index] == key: print(f"Found {key} at position {index}") # 用需求里的测试代码验证 my_list = [36, 31, 79, 96, 36, 91, 77, 33, 19, 3, 34, 12, 70, 12, 54, 98, 86, 11, 17, 17] find(my_list, 12) find(my_list, 91) find(my_list, 80)
代码说明
- 使用
range(len(my_list))生成从0到列表长度-1的索引范围,直接遍历索引值,完美符合需求要求。 - 通过
my_list[index]获取对应索引的元素,和key做比较。 - 找到匹配元素时,按照预期格式输出内容。
- 调用时使用需求里的测试参数,就能得到预期的输出结果。
内容的提问来源于stack exchange,提问作者Rako D. Ahmed
相关产品推荐
相关产品推荐

