用python编写一个圆类及其派生类,根据提示,在右侧编辑器补充代码,父类是圆,派生出球体,圆柱体。编写测试代码测试类的功能。 各类的定义要求如下: 圆(Circle)类:私有属性radius,有一个参数的构造方法、setRadius方法、getRadius方法、cir方法(周长)、area方法(面积),print方法(输出圆的半径)。 球体(Ball):构造方法、barea方法(计算表面积)、vol方法(计算体积) 圆柱体(Cylinder):私有属性height,有两个个参数的构造方法,setHeight方法、getHeight方法、barea方法(计算表面积)、vol方法(计算体积)、输出半径和高的方法print。 测试代码:计算n个球体的表面积和体积之和,以及m个圆柱体的表面积和体积之和。 注意:类名和方法名必须用上面给出的。
时间: 2023-12-23 15:05:30 浏览: 145
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
```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):
super().print()
print("圆柱体的高为:", self.__height)
if __name__ == '__main__':
n = 3
m = 2
balls = []
cylinders = []
for i in range(n):
radius = float(input("请输入第{}个球体的半径:".format(i + 1)))
balls.append(Ball(radius))
for i in range(m):
radius = float(input("请输入第{}个圆柱体的半径:".format(i + 1)))
height = float(input("请输入第{}个圆柱体的高:".format(i + 1)))
cylinders.append(Cylinder(radius, height))
ball_area_sum = 0
ball_vol_sum = 0
for ball in balls:
ball_area_sum += ball.barea()
ball_vol_sum += ball.vol()
cylinder_area_sum = 0
cylinder_vol_sum = 0
for cylinder in cylinders:
cylinder_area_sum += cylinder.barea()
cylinder_vol_sum += cylinder.vol()
print("所有球体的表面积之和为:", ball_area_sum)
print("所有球体的体积之和为:", ball_vol_sum)
print("所有圆柱体的表面积之和为:", cylinder_area_sum)
print("所有圆柱体的体积之和为:", cylinder_vol_sum)
```
测试代码输入参考:
```
请输入第1个球体的半径:2
请输入第2个球体的半径:3
请输入第3个球体的半径:4
请输入第1个圆柱体的半径:2
请输入第1个圆柱体的高:5
请输入第2个圆柱体的半径:4
请输入第2个圆柱体的高:7
```
输出结果:
```
所有球体的表面积之和为: 452.3893421169302
所有球体的体积之和为: 113.09733552923254
所有圆柱体的表面积之和为: 150.79644737231007
所有圆柱体的体积之和为: 131.94689145077132
```
阅读全文