请分别编写两个类:Circle和Rectangle,他们均继承自抽象类Dimension。请在两个子类中重写其面积方法,分别计算圆和矩形的面积。Pi=3.14 输入:一行,一个或两个数 输出:一行,若输入一个数,则输出圆的面积;若输入两个数,则输出矩形的面积。
时间: 2023-12-14 19:39:41 浏览: 76
以下是代码实现:
```python
from abc import ABC, abstractmethod
class Dimension(ABC):
@abstractmethod
def area(self):
pass
class Circle(Dimension):
def __init__(self, r):
self.r = r
def area(self):
return 3.14 * self.r ** 2
class Rectangle(Dimension):
def __init__(self, l, w):
self.l = l
self.w = w
def area(self):
return self.l * self.w
input_str = input().split()
if len(input_str) == 1:
r = float(input_str[0])
circle = Circle(r)
print(circle.area())
else:
l = float(input_str[0])
w = float(input_str[1])
rectangle = Rectangle(l, w)
print(rectangle.area())
```
解释一下:
我们先定义了一个抽象类 Dimension,其中包含了一个抽象方法 area()。接着我们分别定义了 Circle 和 Rectangle 两个子类,它们都继承自 Dimension 类,并且重写了 area() 方法,分别计算圆和矩形的面积。
最后,我们根据输入的参数个数来判断用户是要计算圆的面积还是矩形的面积。如果输入一个数,则认为用户要计算圆的面积,我们就创建一个 Circle 对象并调用其 area() 方法;如果输入两个数,则认为用户要计算矩形的面积,我们就创建一个 Rectangle 对象并调用其 area() 方法。
注意,在计算圆的面积时,我们使用了固定的 pi 值(3.14)。实际上,在 Python 中,我们可以使用 math 模块来获取更精确的 pi 值,例如:
```python
import math
class Circle(Dimension):
def __init__(self, r):
self.r = r
def area(self):
return math.pi * self.r ** 2
```
这样,我们就可以得到更精确的圆面积了。
阅读全文