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

