You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用内置方法实现元素索引查找:修正代码输出错误

问题分析与修复

咱们先拆解下原代码里find函数的核心问题:

  • 你初始化find = -1后,找到匹配值时只做了find +=1,这相当于把目标元素的实际索引3转换成了0,完全偏离了“返回元素所在索引”的需求。
  • 正确的逻辑应该是:遍历列表的每个位置,找到目标值时直接返回当前的索引;如果遍历完整个列表都没找到,再返回-1。

另外原代码里的函数调用有个小细节问题:list_function.find应该直接用find(除非你把函数放到了单独模块里,但这里代码是直接定义的,不用加前缀)。

修正后的完整代码

def find(my_list, value):
    # 用自定义的length函数获取列表长度,遍历每个索引
    for i in range(length(my_list)):
        if my_list[i] == value:
            # 找到匹配项,直接返回当前索引i
            return i
    # 遍历结束仍未找到,返回-1
    return -1

def length(my_list):
    list_length = 0
    for char in my_list:
        list_length += 1
    return list_length

str_list1 = ['r', 'i', 'n', 'g', 'i', 'n', 'g']

print("\nfind Test")
print(find(str_list1, 'g'))  # 输出3
print(find(str_list1, 'z'))  # 输出-1

关键改动说明

  1. 重构find函数逻辑:去掉了多余的find变量,找到匹配时直接返回当前索引i,这才是我们需要的目标位置。
  2. 调整返回时机:只有当整个列表遍历完成且未找到目标值时,才返回-1,完全符合“找不到返回-1”的预期。
  3. 修正函数调用:把list_function.find改成直接调用find,适配当前代码的作用域。

现在运行代码,就能得到预期的输出:3和-1啦!

内容的提问来源于stack exchange,提问作者Koru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:49:13