用Python设计一个描述一元二次方程的类,并为这个类添加异常处理
时间: 2023-11-28 20:47:07 浏览: 75
下面是一个用 Python 设计描述一元二次方程的类,并添加异常处理的示例代码:
```python
class QuadraticEquation:
def __init__(self, a, b, c):
if not isinstance(a, (int, float)):
raise TypeError("a must be a number")
if not isinstance(b, (int, float)):
raise TypeError("b must be a number")
if not isinstance(c, (int, float)):
raise TypeError("c must be a number")
if a == 0:
raise ValueError("a cannot be 0")
self.a = a
self.b = b
self.c = c
def discriminant(self):
return self.b ** 2 - 4 * self.a * self.c
def solutions(self):
d = self.discriminant()
if d < 0:
return None
elif d == 0:
x = -self.b / (2 * self.a)
return x, x
else:
x1 = (-self.b + d ** 0.5) / (2 * self.a)
x2 = (-self.b - d ** 0.5) / (2 * self.a)
return x1, x2
```
在这个类中,我们使用了异常处理来确保输入的参数的正确性。如果 `a`、`b` 或 `c` 不是数字,就会抛出 `TypeError` 异常;如果 `a` 等于 0,就会抛出 `ValueError` 异常。
`discriminant` 方法计算方程的判别式,`solutions` 方法计算方程的解。如果判别式小于 0,方程没有实数解,返回 `None`;如果判别式等于 0,方程有一个重根,返回一个包含这个重根的元组;如果判别式大于 0,方程有两个不同的实数解,返回一个包含这两个解的元组。
示例用法:
```python
# 创建一个 QuadraticEquation 对象
q = QuadraticEquation(1, -3, 2)
# 计算方程的判别式和解
print(q.discriminant()) # 1.0
print(q.solutions()) # (2.0, 1.0)
```
如果输入的参数不正确,会抛出异常:
```python
# a 不是数字,抛出 TypeError 异常
q = QuadraticEquation('a', -3, 2)
# a 等于 0,抛出 ValueError 异常
q = QuadraticEquation(0, -3, 2)
```
阅读全文