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

Python编写斐波那契程序遇TypeError: 'set' object is not callable求助

问题分析与解决方案

错误根源

你代码里的allNums = {1, 1}定义的是集合(set),集合的特性是无序、元素唯一,既不支持通过索引(如allNums[currentIndex - 1])访问元素,也不允许用allNums[currentIndex] = nextIndex这种方式添加元素。报错TypeError: 'set' object is not callable本质是集合不支持索引操作,你误以为它像列表一样可以按位置访问。

至于你说笔记本运行正常,大概率是代码不一致(比如笔记本上实际用的是列表),因为集合的索引操作在任何Python环境下都会触发错误。

修复方案

将存储斐波那契数的容器改为列表(list),列表是有序结构,支持索引访问和动态添加元素。

修改后的代码:

allNums = [1, 1]  # 改为列表

while len(allNums) < 35:
    currentIndex = len(allNums)
    nextIndex = allNums[currentIndex - 1] + allNums[currentIndex - 2]
    allNums.append(nextIndex)  # 用append添加元素更直观
    print(nextIndex)

补充说明

  • 列表的索引从0开始,初始的[1,1]对应斐波那契数列的前两项,len(allNums)会随着元素添加动态增长,完全匹配你的循环逻辑。
  • 如果坚持想用索引赋值的方式(比如allNums[currentIndex] = nextIndex),也是可行的,因为列表支持扩展索引赋值,不过append()是更符合Python风格的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:46:02