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

编写Tribonacci程序遇错误:unsupported operand type(s) for +: 'int' and 'list'

问题分析与修复

错误原因

你代码里的核心问题是array.append(signature)——这会把整个初始列表[1,1,1]作为单个元素塞进array,导致array一开始是[[1,1,1]]。后续循环又往里面加单个整数,最终array变成[[1,1,1], 1, 1, 1]。当i=3时,sum(array[i-3:i])相当于对[[1,1,1],1,1]求和,这里面既有列表又有整数,自然会触发unsupported operand type(s) for +: 'int' and 'list'的错误。

另外循环逻辑也有偏差:range(n)会执行n次循环,但你期望输出长度为n的序列,当前逻辑会生成多余元素。

修复后的代码

def tribonacci(signature, n):
    # 初始化结果数组为初始序列的副本,避免修改原输入
    array = signature.copy()
    # 循环生成元素,直到数组长度达到n
    while len(array) < n:
        # 取最后三个元素求和得到下一个数
        next_num = sum(array[-3:])
        array.append(next_num)
    # 处理n小于3的边界情况(比如n=0返回空列表,n=2返回前两个初始元素)
    return array[:n]

print(tribonacci([1,1,1], 4))  # 输出: [1, 1, 1, 3]

关键修改点

  • 用signature.copy()初始化结果数组,确保数组里全是单个整数元素,不会混入列表
  • 用while len(array) < n控制循环,逻辑更直观,精准生成到目标长度
  • 用array[-3:]直接取最后三个元素,无需计算索引,简洁不易错
  • 兼容n小于3的边界场景,比如输入n=2时返回[1,1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:24:52