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

Python求连续元素最大乘积函数报错:返回元组而非整数

解决连续数组元素最大乘积函数中的TypeError问题

错误根源

你代码里的第一个product初始化语句product = 1,末尾多了个逗号——在Python中,单个值加逗号会被解析为元组(比如(1,)),而不是整数1。后续执行product *= n时,元组和整数相乘会生成新的元组(比如(1,) * 2得到(1,1)),这就导致max(product, maxP)时,试图拿元组和整数比较,触发TypeError。

修复后的代码

把第一个product初始化的逗号去掉,同时可以移除冗余的打印语句,最终代码如下:

def max_product(nums):
    product = 1  # 移除末尾逗号,改为整数赋值
    maxP = min(nums)

    # 正向遍历计算乘积
    for n in nums:
        product *= n
        maxP = max(product, maxP)
        if n == 0:
            product = 1
        
    # 反向遍历计算乘积(处理负数导致的最大乘积出现在右侧的情况)
    product = 1
    for n in nums[::-1]:
        product *= n
        maxP = max(product, maxP)
        if n == 0:
            product = 1
    
    return maxP


print(max_product([2, 3, -2, 4]))  # 输出:6

验证说明

修正后:

  • 正向遍历到2*3时,product为6,maxP更新为6;后续乘-2得到-12,再乘4得到-48,maxP保持6
  • 反向遍历从4开始,依次计算得到4、-8、-24、-48,maxP依然保持6
  • 最终返回预期结果6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:21