求方程的根,用3个函数分别求当大于0,等于0和小于0时的根并输出结果。在主函数输入的值,通过调用这些函数输出对应的计算结果。(运行程序时输入的分别取以下3组数据:1,2,1;1,2,2;2,6,1)。
时间: 2023-06-18 08:08:40 浏览: 62
好的,这是一个求解二次方程的问题。我们可以定义3个函数来分别计算大于0,等于0和小于0时的根,并在主函数中调用这些函数。下面是代码实现:
```python
import math
def roots_when_greater_than_zero(a, b, c):
delta = b*b - 4*a*c
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
return x1, x2
def root_when_equal_to_zero(a, b):
x = -b / (2*a)
return x
def roots_when_less_than_zero(a, b, c):
real_part = -b / (2*a)
imag_part = math.sqrt(abs(b*b - 4*a*c)) / (2*a)
return f"{real_part} + {imag_part}i", f"{real_part} - {imag_part}i"
# 主函数
if __name__ == "__main__":
a, b, c = map(int, input("请输入二次方程的系数 a b c(以空格分隔):").split())
delta = b*b - 4*a*c
if delta > 0:
x1, x2 = roots_when_greater_than_zero(a, b, c)
print(f"方程 {a}x^2 + {b}x + {c} = 0 的根为:{x1:.2f}, {x2:.2f}")
elif delta == 0:
x = root_when_equal_to_zero(a, b)
print(f"方程 {a}x^2 + {b}x + {c} = 0 的根为:{x:.2f}")
else:
x1, x2 = roots_when_less_than_zero(a, b, c)
print(f"方程 {a}x^2 + {b}x + {c} = 0 的根为:{x1}, {x2}")
```
运行程序时,将会提示你输入3个系数 a, b, c,并分别输出大于0,等于0和小于0时的根。例如,输入 1 2 1,运行结果如下:
```
请输入二次方程的系数 a b c(以空格分隔):1 2 1
方程 1x^2 + 2x + 1 = 0 的根为:-1.00, -1.00
```
再例如,输入 2 6 1,运行结果如下:
```
请输入二次方程的系数 a b c(以空格分隔):2 6 1
方程 2x^2 + 6x + 1 = 0 的根为:-0.18 + 0.68i, -0.18 - 0.68i
```
注意,当 delta 小于0时,函数 roots_when_less_than_zero 返回的是一个字符串,形如 "a + bi",其中 a 和 b 分别是实部和虚部。