设计出一个求面积的Area类,要求能处理三角形 矩形和圆形的面积计算,并能自动处理用户输入异常
时间: 2025-06-15 07:18:29 浏览: 13
可以设计一个名为 `Area` 的通用类,包含三个子类:`Triangle`, `Rectangle`, 和 `Circle`,分别对应三角形、矩形和圆形的面积计算。同时,在类中加入异常处理机制来应对用户输入错误的情况。以下是简化的类结构和部分实现:
```python
class Area:
def __init__(self, sides=None, length=None, width=None, radius=None):
self.sides = sides
self.length = length
self.width = width
self.radius = radius
def get_area(self):
raise NotImplementedError("Subclasses must implement this method.")
@staticmethod
def validate_input(value, name, valid_range=None):
try:
value = float(value)
if valid_range and not (valid_range[0] <= value <= valid_range[1]):
raise ValueError(f"Invalid {name}. Value should be between {valid_range[0]} and {valid_range[1]}.")
return value
except ValueError as e:
print(e)
return None
class Triangle(Area):
def get_area(self):
a = self.validate_input(self.sides, 'side', [0, float('inf')])
if a is not None:
return 0.5 * a * a
class Rectangle(Area):
def get_area(self):
length = self.validate_input(self.length, 'length', [0, float('inf')])
width = self.validate_input(self.width, 'width', [0, float('inf')])
if length and width:
return length * width
class Circle(Area):
def get_area(self):
radius = self.validate_input(self.radius, 'radius', [0, float('inf')])
if radius:
return 3.14159 * radius ** 2
# 使用示例
try:
triangle = Triangle(sides=3)
rectangle = Rectangle(length=4, width=5)
circle = Circle(radius=6)
print(triangle.get_area())
print(rectangle.get_area())
print(circle.get_area())
except Exception as e:
print("An error occurred:", e)
```
在这个例子中,`Area` 类负责初始化并提供计算面积的基础框架,而子类负责实现各自的计算逻辑,并通过静态方法 `validate_input` 检查用户输入是否有效。
阅读全文
相关推荐


















