Python函数has_33无返回值问题:判断列表是否存在相邻3
问题分析与修正
原函数存在两个核心问题:
- 循环直接遍历列表元素,
i+1被解析为当前元素值加1,而非列表的下一个元素,完全错误地理解了“相邻元素”的判断逻辑。 - 遍历结束后未找到符合条件的相邻元素时,函数没有返回值(默认返回
None),不符合需求中需返回布尔值的要求。
修正后的代码
def has_33(nums): # 遍历到倒数第二个元素即可,避免索引越界 for i in range(len(nums) - 1): if nums[i] == 3 and nums[i+1] == 3: return True # 遍历完所有相邻对都没找到,返回False return False # 测试示例 print(has_33([3, 3, 3])) # 输出True
关键修正点
- 使用
range(len(nums)-1)获取索引,这样可以安全地访问nums[i]和nums[i+1],不会出现索引越界。 - 明确判断当前索引对应的元素和下一个索引对应的元素是否都是3。
- 遍历结束后添加
return False,确保无论是否找到符合条件的元素,函数都返回布尔值。
内容的提问来源于stack exchange,提问作者Joyce Michael
相关产品推荐
相关产品推荐

