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
相关产品推荐
相关产品推荐

