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

Python程序调用函数报错TypeError: 'int' object is not callable求助

解决TypeError: 'int' object is not callable的问题

嘿,我一眼就瞅到你代码里的问题了——你把乘法运算符*写成了函数调用的括号格式,导致Python把整数变量当成函数来调用,这直接触发了TypeError: 'int' object is not callable错误。另外还有个小坑是函数参数缺失,我给你一步步拆解修复:

1. 核心错误:把乘法写成了函数调用

看这两个函数里的代码:

  • 在cal1中:wala=we*woc(wa-woc) → 这里woc是你输入的整数,woc(wa-woc)的写法会让Python以为你要调用名为woc的函数,但它只是个int变量,正确写法应该是乘法运算:we * woc * (wa - woc)
  • 在cal3中:wele=wa**2+woc(wa-woc) → 同理,改成wa**2 + woc * (wa - woc)

2. 次要错误:cal2函数参数缺失

cal2的定义是def cal2(wo,woh):,但函数内部用到了wa变量,这个变量并没有作为参数传入函数,运行时会报NameError。你需要修改函数定义,把wa加进去,同时调用的时候也要传入这个参数:

  • 函数定义改成:def cal2(wo,woh,wa):
  • 调用时改成:wolo = cal2(wo,woh,wa)

修复后的完整代码

#!/usr/bin/python3
def displaymenu():
    input32=int(input("1) Run experiment\n2) Exit"))
    return input32

def cal1(we,woc,wa):
    wala=we * woc * (wa - woc)
    return wala

def cal2(wo,woh,wa):
    wolo=24*wo*woh*wa
    return wolo

def cal3(wa,woc):
    wele=wa**2 + woc * (wa - woc)
    return wele

def beamere(wala,wolo,wele):
    y=(wala/wolo)*wele
    return y

input32 = displaymenu()
while input32 is not 2:
    if input32 == 1:
        we= int(input("enter your width"))
        wo= int(input("enter what ever this is"))
        woh=int(input("enter this thing"))
        wa= int(input("i really should stop calling my varibles random sylibles"))
        woc=int(input("enter your woc"))
        wala = cal1(we,woc,wa)
        wolo = cal2(wo,woh,wa)
        wele = cal3(wa,woc)
        y = beamere(wala,wolo,wele)
        print(y)
    elif input32 == 2:
        print("learn english")
        break
    else:
        input32 = displaymenu()

补充说明

为什么会触发这个TypeError?简单说:当你在Python里写变量(xxx)的时候,它默认会去找这个变量对应的可调用对象(比如函数、类),但如果变量是整数、字符串这种不可调用的基础类型,就会抛出这个错误——本质上就是你把乘法的*漏写了,写成了括号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:27