Python实现first_neg函数用while循环查找列表第一个负数的下标
Python first_neg函数报错问题排查与修正
报错原因
你遇到的TypeError: object of type 'function' has no len()报错,核心原因是代码中混淆了函数名和传入的列表参数,除此之外还有多个逻辑和语法问题:
- 缩进错误:函数体内容
i = 0及后续代码没有缩进,不符合Python语法规则 - 循环条件错误:
len(first_neg)中的first_neg是函数本身,不是你要处理的输入列表,你应该计算传入参数a的长度,改为len(a) - 元素访问错误:
first_neg[i]同样是误用函数名,应该改为访问输入列表的元素a[i] - 返回值错误:题目要求返回第一个负数的下标,但你写的
return a[i]返回的是负数本身,应该改为return i - 缺省返回值逻辑:遍历完列表没有找到负数时,需要显式返回
None符合测试用例要求
修正后的代码
def first_neg(a): i = 0 while i < len(a): if a[i] < 0: return i i += 1 # 遍历完未找到负数 return None # Testcases print(first_neg([2, 3, -1, 4, -2])) # 输出 2 print(first_neg([2, 3, 1, 4, 2])) # 输出 None print(first_neg([])) # 输出 None
运行验证
修正后运行测试用例,输出结果和预期完全一致。
内容的提问来源于stack exchange,提问作者raneem
相关产品推荐
相关产品推荐

