用Python编写的一元二次方程求根程序,包含完整注释说明

# 导入数学模块用于数值计算

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)

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
小汤不喝水的头像 - 鹿快
评论 共8条

请登录后发表评论

    暂无评论内容