def equartion(a, b, c): delta = b ** 2 - 4 * a * c if delta > 0: x1 = (-b + sq(delta)) / (2 * a) x2 = (-b - sq(delta)) / (2 * a) print('此方程有两个不相等的实数解,它们是:') print(f'x1={x1}, x2={x2}') elif delta == 0: x = -b / (2 * a) print(f'此方程有两个相等的实根,它们是:') else: print('无实数解')优化这段代码
时间: 2023-06-02 10:07:36 浏览: 45
def equation(a, b, c):
delta = b ** 2 - 4 * a * c
if delta > 0:
x1 = (-b + delta ** 0.5) / (2 * a)
x2 = (-b - delta ** 0.5) / (2 * a)
print(f'此方程有两个不相等的实数解,它们是:x1={x1}, x2={x2}')
elif delta == 0:
x = -b / (2 * a)
print(f'此方程有两个相等的实根,它们是:x={x}')
else:
print('无实数解')
相关问题
class QuadraticEquation: def __init__(self, a, b, c): self.a = a self.b = b self.c = c def solve(self): delta = self.b ** 2 - 4 * self.a * self.c if delta < 0: print("方程无实数解") elif delta == 0: x = -self.b / (2 * self.a) print(f"方程有一个实数解:x = {x}") else: x1 = (-self.b + delta ** 0.5) / (2 * self.a) x2 = (-self.b - delta ** 0.5) / (2 * self.a) print(f"方程有两个实数解:x1 = {x1}, x2 = {x2}")
这段代码也是一个解决一元二次方程的Python类,和我之前给出的代码有些许不同。以下是代码解释:
```python
class QuadraticEquation:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def solve(self):
delta = self.b ** 2 - 4 * self.a * self.c
if delta < 0:
print("方程无实数解")
elif delta == 0:
x = -self.b / (2 * self.a)
print(f"方程有一个实数解:x = {x}")
else:
x1 = (-self.b + delta ** 0.5) / (2 * self.a)
x2 = (-self.b - delta ** 0.5) / (2 * self.a)
print(f"方程有两个实数解:x1 = {x1}, x2 = {x2}")
```
在这个类中,我们同样定义了三个变量 `a`,`b` 和 `c`,表示一元二次方程的系数。`__init__` 方法同样用于初始化这些变量。我们还定义了一个方法 `solve`,用于解决方程并打印出结果。
在 `solve` 方法中,我们首先计算方程的判别式 `delta`。如果 `delta` 小于零,则说明方程无实数解。如果 `delta` 等于零,则说明方程有一个实数解,计算出这个解并打印出来。如果 `delta` 大于零,则说明方程有两个不同的实数解,计算出这两个解并打印出来。
使用这个类,你可以创建一个 `QuadraticEquation` 对象,然后调用它的 `solve` 方法来解决方程并打印出结果。例如:
```python
eq = QuadraticEquation(1, -5, 6)
eq.solve() # 输出 "方程有两个实数解:x1 = 3.0, x2 = 2.0"
```
这个例子同样解决的是 $x^2 - 5x + 6 = 0$ 这个方程。两段代码的区别在于,第二段代码使用了一个 `solve` 方法来解决方程并打印出结果,而第一段代码使用了一个 `discriminant` 方法来计算方程的判别式,以及一个 `roots` 方法来计算方程的根。
import mathdef gz(a, b, c): delta = b**2 - 4*a*c if delta > : x1 = (-b + math.sqrt(delta)) / (2*a) x2 = (-b - math.sqrt(delta)) / (2*a) return round(x1, 3), round(x2, 3) elif delta == : x = -b / (2*a) return round(x, 3) else: return "无实数根"def ez(a, b, c): delta = b**2 - 4*a*c if delta > : x1 = (-b + math.sqrt(delta)) / (2*a) x2 = (-b - math.sqrt(delta)) / (2*a) return round(x1, 3), round(x2, 3) elif delta == : x = -b / (2*a) return round(x, 3) else: x1 = complex(-b / (2*a), math.sqrt(-delta) / (2*a)) x2 = complex(-b / (2*a), -math.sqrt(-delta) / (2*a)) return round(x1, 3), round(x2, 3)def sz(a, b, c): delta = b**2 - 4*a*c if delta > : x1 = (-b + math.sqrt(delta)) / (2*a) x2 = (-b - math.sqrt(delta)) / (2*a) return round(x1, 3), round(x2, 3) elif delta == : x = -b / (2*a) return round(x, 3) else: p = -b / (2*a) q = math.sqrt(-delta) / (2*a) return f"{round(p, 3)}+{round(q, 3)}i", f"{round(p, 3)}-{round(q, 3)}i"# 主函数a = float(input("请输入a的值:"))b = float(input("请输入b的值:"))c = float(input("请输入c的值:"))print("当b^2-4ac大于时的根为:", gz(a, b, c))print("当b^2-4ac等于时的根为:", ez(a, b, c))print("当b^2-4ac小于时的根为:", sz(a, b, c))
这段代码定义了三个函数,用于求解一元二次方程的解。其中,函数gz()用于求解有实数解的情况,函数ez()用于求解有复数解的情况,函数sz()用于求解有虚数解的情况。函数的输入参数为方程的三个系数a、b、c,返回值为方程的解。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)