二次方程求解代码出现TypeError: 'int' object is not callable错误求助
解决你的二次方程求解代码问题
嘿,我一眼就揪出几个新手常踩的小坑啦,别慌,咱们一步步把代码掰正:
错误原因拆解
你碰到的TypeError: 'int' object is not callable,核心问题有三个:
- 乘法运算符缺失:代码里的
(num1)(num3),Python会把num1当成函数去调用,但它其实是个整数,自然就报错了。数学里的省略乘号在Python里行不通,必须明确写*。 - 平方运算用错符号:
num2^2不是数学里的平方,这是Python的按位异或运算符,要实现平方得用num2 ** 2或者pow(num2, 2)。 - 结果计算逻辑混乱:二次方程的两个根是
(-b±√(b²-4ac))/(2a),你拆分的result1和result2只算了其中一个根的半截,逻辑完全不对。
修正后的完整代码
import math # 用float代替int,兼容小数系数的情况 a = float(input("Enter a:")) b = float(input("Enter b:")) c = float(input("Enter c:")) # 先计算判别式,避免重复计算 discriminant = b ** 2 - 4 * a * c # 分情况处理,避免根号下负数直接报错 if discriminant >= 0: root1 = (-b + math.sqrt(discriminant)) / (2 * a) root2 = (-b - math.sqrt(discriminant)) / (2 * a) print(f"第一个根:{root1}") print(f"第二个根:{root2}") else: # 额外处理复数根的情况 real_part = -b / (2 * a) imaginary_part = math.sqrt(-discriminant) / (2 * a) print(f"第一个复根:{real_part} + {imaginary_part}i") print(f"第二个复根:{real_part} - {imaginary_part}i")
额外优化说明
- 把变量名改成
a、b、c,更贴合二次方程的习惯,可读性拉满。 - 换成
float类型接收输入,这样输入小数系数也能正常计算。 - 增加了判别式判断,避免输入导致根号下出现负数直接崩溃,还额外支持了复数根的输出。
内容的提问来源于stack exchange,提问作者pTinosq
相关产品推荐
相关产品推荐

