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

Python函数max_and_min实现错误排查:元素级求和逻辑异常

问题排查:max_and_min函数实现错误

需求说明

编写函数max_and_min(t1, t2),接收两个等长元组,计算元素级求和(element-wise sums),返回包含所有求和结果的最大值与最小值的元组。

错误信息

Traceback (most recent call last):
  File "/home/codio/workspace/.guides/secure/test_max_and_min.py", line 8, in test_basic
    self.assertEqual(max_and_min((2, 3), (9, 1)), (11, 4))
AssertionError: Tuples differ: (12, 3) != (11, 4)

First differing element 0:
12
11

- (12, 3)
+ (11, 4)

你的实现代码

def max_and_min(t1, t2):
  t3 =[]
  res =[]

  t = ()
  l1=list(t1)
  l2=list(t2)

  for i in range (len(l1)):
    for j in range(len(l2)):
      t3.append(l1[i]+l2[j])
  res.append(max(t3))
  res.append(min(t3))
  t=tuple(res)

  return t

错误原因

你用了双层循环,把两个元组的所有元素两两交叉相加了。以测试用例(2, 3)和(9, 1)为例,你的代码计算的是2+9、2+1、3+9、3+1,得到的求和列表是[11, 3, 12, 4],所以最大值是12,最小值是3,这和需求要求的**元素级求和(对应位置元素相加)**完全不符。

元素级求和要求的是:第一个元组的第n个元素 + 第二个元组的第n个元素,即测试用例中应该计算2+9=11、3+1=4,求和列表为[11,4],最终返回(11,4)。

修正后的代码

简洁版(用zip遍历对应元素)

def max_and_min(t1, t2):
    # 遍历两个元组的对应元素,计算元素级求和
    element_sums = [a + b for a, b in zip(t1, t2)]
    # 返回最大值和最小值组成的元组
    return (max(element_sums), min(element_sums))

索引遍历版(适合理解基础逻辑)

def max_and_min(t1, t2):
    element_sums = []
    # 遍历索引,取对应位置的元素相加
    for i in range(len(t1)):
        element_sums.append(t1[i] + t2[i])
    return (max(element_sums), min(element_sums))

验证结果

用测试用例max_and_min((2, 3), (9, 1))测试,修正后的代码会计算得到求和列表[11,4],返回元组(11,4),与测试预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:48:18