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

为何两段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放在了循环体外,覆盖了所有场景:

  1. 累加过程中总和超过9000,触发break跳出循环,返回当前总和
  2. 遍历完所有元素总和仍未超过9000,循环正常结束后返回最终总和
  3. 空列表直接跳过循环,返回初始值0

所有测试用例都能被正确处理,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:03:26