用python修改一元二次方程求解程序。
时间: 2023-05-26 14:04:31 浏览: 53
假设一元二次方程为 $ax^2 + bx + c = 0$。
原程序:
```python
import cmath
a = float(input('输入a:'))
b = float(input('输入b:'))
c = float(input('输入c:'))
d = (b**2) - (4*a*c)
sol1 = (-b-cmath.sqrt(d))/(2*a)
sol2 = (-b+cmath.sqrt(d))/(2*a)
print('解为 {0} 和 {1}'.format(sol1,sol2))
```
修改后的程序:
```python
import cmath
def solve_quad_eq(a, b, c):
d = b**2 - 4*a*c
if d < 0:
return None # 无实数根
elif d == 0:
x = -b / (2*a)
return x # 有一重实数根
else:
x1 = (-b - cmath.sqrt(d)) / (2*a)
x2 = (-b + cmath.sqrt(d)) / (2*a)
return x1, x2 # 有两个实数根
# 测试
a = 2
b = 3
c = -20
roots = solve_quad_eq(a, b, c)
if roots is None:
print("无实数根")
elif isinstance(roots, tuple):
x1, x2 = roots
print("两个实数根分别为:x1 = {}, x2 = {}".format(x1, x2))
else:
x = roots
print("有一个实数根:x = {}".format(x))
```
修改点:
1. 原程序只能解一元二次方程有两个实数根的情况,无法处理有一重实数根或无实数根的情况。因此修改后的程序要增加判断。
2. 原程序只是将输入和输出放在了一起,不便于复用和测试。修改后的程序将求解和输出分开,把求解封装成函数 `solve_quad_eq(a, b, c)`,以便于程序调用。同时,添加了一些测试代码,方便检查程序是否正确。