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

Python求解一元二次方程复数根时else分支代码编写问题

Python一元二次方程复数根求解修正方案

原有代码核心问题

  • 运算顺序错误:/2 * a等价于a/2,不符合求根公式的/(2*a)数学定义
  • 复数场景下实部错误使用地板除//,会导致非整数实部结果被截断失真
  • 负数判别式直接取0.5次方得到的复数格式不符合常规的a+bi书写习惯
  • 若在负数场景调用math.sqrt会直接抛出不支持负数输入的报错

修正后完整代码

while True:
    a = int(input("enter the number a:"))
    if a == 0:
        print("Cannot be 0!")
        continue
    b = int(input("enter the number b:"))
    c = int(input("enter the number c:"))
    print(f"Equation:{a}x^2+{b}x+{c}")
    discriminant = b ** 2 - 4 * a * c
    if discriminant > 0:
        root_disc = discriminant ** 0.5
        root1 = (-b + root_disc) / (2 * a)
        root2 = (-b - root_disc) / (2 * a)
        print(root1, root2)
    elif discriminant == 0:
        root = (-b) / (2 * a)
        print(root)
    else:
        # 计算实部
        real_part = (-b) / (2 * a)
        # 计算虚部系数(取判别式绝对值开根号)
        imag_part = (-discriminant) ** 0.5 / (2 * a)
        # 按常规复数书写格式输出
        print(f"{real_part} + {imag_part}i")
        print(f"{real_part} - {imag_part}i")
    break

修改说明

  1. 统一调整了求根的运算顺序,把/2 * a改为/(2 * a),匹配数学公式要求
  2. 复数分支单独拆分实部、虚部计算,输出格式符合日常读写习惯
  3. 虚部计算时先取判别式的绝对值开根号,避免出现多余的复数类型标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:54:02