# 导入数学模块用于数值计算
import math
import cmath # 用于处理复数运算
def solve_quadratic():
“””
主函数:求解一元二次方程 ax² + bx + c = 0 的根
实现步骤:
1. 获取用户输入
2. 验证输入有效性
3. 计算判别式
4. 根据判别式计算根
5. 格式化输出结果
“””
try:
# 获取用户输入的二次项系数
a = float(input(“请输入二次项系数a(a≠0):”)) # [1,4,5](@ref)
# 获取用户输入的一次项系数
b = float(input(“请输入一次项系数b:”)) # [1,4,5](@ref)
# 获取用户输入的常数项
c = float(input(“请输入常数项c:”)) # [1,4,5](@ref)
# 验证是否为一元二次方程
if a == 0:
raise ValueError(“错误:a不能为0,这不是二次方程!”) # [3,4,5](@ref)
# 计算判别式Δ = b² – 4ac
delta = b**2 – 4*a*c # [1,2,4,5](@ref)
# 根据判别式判断根的情况
if delta > 0:
# 两个不同实根
sqrt_delta = math.sqrt(delta) # [1,4,5](@ref)
root1 = (-b + sqrt_delta) / (2*a)
root2 = (-b – sqrt_delta) / (2*a)
print(f”方程有两个不同实根:x₁={root1:.2f}, x₂={root2:.2f}”) # [1,4](@ref)
elif delta == 0:
# 一个实根(重根)
root = -b / (2*a) # [1,4,5](@ref)
print(f”方程有一个实根(重根):x={root:.2f}”) # [1,4](@ref)
else:
# 复数根(使用cmath处理负数平方根)
sqrt_delta = cmath.sqrt(delta) # [4,5,6](@ref)
root1 = (-b + sqrt_delta) / (2*a)
root2 = (-b – sqrt_delta) / (2*a)
print(f”方程有两个共轭复根:x₁={root1}, x₂={root2}”) # [4,5,6](@ref)
except ValueError as e:
# 处理数值转换错误
print(f”输入错误:{str(e)}”) # [3,4,5](@ref)
except ZeroDivisionError:
# 处理除零错误
print(“错误:除数不能为零!”) # [3,4](@ref)
except Exception as e:
# 处理其他未知错误
print(f”发生未知错误:{str(e)}”) # [3,4](@ref)
# 程序入口
if __name__ == “__main__”:
solve_quadratic() # [1,3,4](@ref)













- 最新
- 最热
只看作者