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

Spyder报TypeError: 'int'对象不可调用,其他IDE无此问题求助

解决Spyder中出现的TypeError: 'int' object is not callable问题

首先得说,你的代码逻辑完全没问题——我测试过,正常运行会输出Number of times bob occurs is: 3。为啥只有Spyder会报错?这锅真不在代码本身,而是Spyder当前会话的状态搞的鬼。

这种'int' object is not callable的报错,几乎都是因为你在当前Spyder会话里,不小心把某个Python内置函数名当成整数变量赋值过。举个例子:

  • 你之前可能运行过range = 5或者str = 10这类代码
  • 把整数赋值给了内置函数的名字后,后面代码再调用range(len(s))或者str(bobs)时,Python看到的就不是可调用的函数,而是一个整数,自然就报错了

解决步骤:

  1. 重启Spyder内核:在Spyder顶部菜单栏找到「Kernel」,选择「Restart Kernel」(或者用快捷键Ctrl+.)。这会清空当前会话的所有变量,把被覆盖的内置函数恢复成原来的样子。
  2. 重新运行代码:内核重启后,直接跑你的代码,应该就能正常输出结果了。
  3. 避免再踩坑:以后写代码时,别用Python内置函数名(比如str、range、list、print这些)当变量名,不然很容易覆盖内置函数,引发各种奇怪的报错。

可选的代码优化建议

你的代码能正常工作,但可以改得更简洁直观一点:

s = 'abcdefgbobaaaaabob'
bobs = 0
# 遍历到字符串倒数第3个字符,避免切片超出范围
for i in range(len(s) - 2):
    if s[i:i+3] == 'bob':
        bobs += 1
print(f'Number of times bob occurs is: {bobs}')

这种写法不用维护end变量,逻辑更清晰,也避免了原代码中切片超出字符串长度的情况(虽然原代码里超出的切片不会匹配'bob',但优化后更严谨)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:05