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

二次方程求解代码出现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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:31:14