为何两段Python列表求和代码部分输出一致但一段不被判定正确?
问题原因解析:为什么Coding 1不符合需求?
函数核心需求
- 累加列表元素,总和超过9000时立即返回当前总和
- 所有元素累加完仍未超过9000,返回最终总和
- 空列表返回0
Coding 1的缺陷
代码如下:
# Write your function here - Coding 1 def over_nine_thousand(lst): sum = 0 for index in lst: sum += index if sum < 9000: continue else: return sum print(over_nine_thousand([8000, 900, 120, 5000]))
这段代码的逻辑漏洞很明显:
只有当累加后的总和大于等于9000时,函数才会通过return sum返回结果。如果遍历完所有元素总和仍未到9000(比如测试用例[8000,900],总和8900),或者列表为空时,函数没有任何return语句,Python会默认返回None,完全不符合需求。
Coding 2为什么正确
代码如下:
# #Write your function here - Coding 2 def over_nine_thousand(lst): sum = 0 for index in lst: sum += index if sum > 9000: break return sum print(over_nine_thousand([8000, 900, 120, 5000]))
这段代码把return sum放在了循环体外,覆盖了所有场景:
- 累加过程中总和超过9000,触发
break跳出循环,返回当前总和 - 遍历完所有元素总和仍未超过9000,循环正常结束后返回最终总和
- 空列表直接跳过循环,返回初始值0
所有测试用例都能被正确处理,符合需求。
内容的提问来源于stack exchange,提问作者Codette
相关产品推荐
相关产品推荐

