根据提示,在右侧编辑器补充代码,父类是圆,派生出球体,圆柱体。编写测试代码测试类的功能。 各类的定义要求如下: 圆(Circle)类:私有属性radius,有一个参数的构造方法、setRadius方法、getRadius方法、cir方法(周长)、area方法(面积),print方法(输出圆的半径)。 球体(Ball):构造方法、barea方法(计算表面积)、vol方法(计算体积) 圆柱体(Cylinder):私有属性height,有两个个参数的构造方法,setHeight方法、getHeight方法、barea方法(计算表面积)、vol方法(计算体积)、输出半径和高的方法print。 测试代码:计算n个球体的表面积和体积之和,以及m个圆柱体的表面积和体积之和。 注意:类名和方法名必须用上面给出的。 测试说明 平台会对你编写的代码进行测试: 具体信息参见测试函数。 输出数据如下: [2,3,4] [[1,2],[2,3],[3,4]] 输出结果如下: 球的表面积之和=364.24 球的体积之和=414.48 圆柱体的表面积之和=213.52 圆柱体的体积之和=157.00
时间: 2024-02-20 20:58:50 浏览: 99
```python
import math
# 圆类
class Circle:
def __init__(self, radius):
self.__radius = radius
def setRadius(self, radius):
self.__radius = radius
def getRadius(self):
return self.__radius
def cir(self):
return 2 * math.pi * self.__radius
def area(self):
return math.pi * self.__radius ** 2
def print(self):
print("圆的半径为:", self.__radius)
# 球体类,继承自圆类
class Ball(Circle):
def __init__(self, radius):
super().__init__(radius)
def barea(self):
return 4 * math.pi * self.getRadius() ** 2
def vol(self):
return 4 / 3 * math.pi * self.getRadius() ** 3
# 圆柱体类,继承自圆类
class Cylinder(Circle):
def __init__(self, radius, height):
super().__init__(radius)
self.__height = height
def setHeight(self, height):
self.__height = height
def getHeight(self):
return self.__height
def barea(self):
return 2 * math.pi * self.getRadius() * self.__height + 2 * math.pi * self.getRadius() ** 2
def vol(self):
return math.pi * self.getRadius() ** 2 * self.__height
def print(self):
print("圆柱体的半径为:", self.getRadius())
print("圆柱体的高为:", self.__height)
# 测试代码
if __name__ == "__main__":
# 计算n个球体的表面积和体积之和
n = 3
r_list = [2, 3, 4] # 半径列表
ball_list = [] # 球体列表
s_ball = 0 # 球体表面积之和
v_ball = 0 # 球体体积之和
for r in r_list:
ball = Ball(r)
ball_list.append(ball)
s_ball += ball.barea()
v_ball += ball.vol()
print("球的表面积之和={:.2f}".format(s_ball))
print("球的体积之和={:.2f}".format(v_ball))
# 计算m个圆柱体的表面积和体积之和
m = 3
rc_list = [[1, 2], [2, 3], [3, 4]] # [半径, 高] 列表
cyl_list = [] # 圆柱体列表
s_cyl = 0 # 圆柱体表面积之和
v_cyl = 0 # 圆柱体体积之和
for rc in rc_list:
cyl = Cylinder(rc[0], rc[1])
cyl_list.append(cyl)
s_cyl += cyl.barea()
v_cyl += cyl.vol()
print("圆柱体的表面积之和={:.2f}".format(s_cyl))
print("圆柱体的体积之和={:.2f}".format(v_cyl))
```
阅读全文