2024/11/13

from abc import ABC, abstractmethod

class Shape3D(ABC):
@abstractmethod
def circumference(self):
"""计算周长"""
pass

@abstractmethod
def area(self):
"""计算面积"""
pass

@abstractmethod
def volume(self):
"""计算体积"""
pass

@abstractmethod
def display(self):
"""显示信息"""
pass

#定义点类
class Point:
def __init__(self, x, y):
self.x = x
self.y = y

def get_coordinates(self):
return self.x, self.y

def set_coordinates(self, x, y):
self.x = x
self.y = y
#显示点的坐标
def display(self):
print(f"Point coordinates: ({self.x}, {self.y})")

#定义圆类
class Circle(Point, Shape3D):
def __init__(self, x, y, radius):
super().__init__(x, y)
self.radius = radius

def get_radius(self):
return self.radius

def set_radius(self, radius):
self.radius = radius
#计算周长
def circumference(self):
return 2 * 3.14 * self.radius
#计算面积
def area(self):
return 3.14 * self.radius * self.radius
#计算体积 圆没有体积返回0
def volume(self):
return 0 # Circle doesn't have volume

def display(self):
print(f"Circle: center=({self.x}, {self.y}), radius={self.radius}")

#定义球体
class Sphere(Circle):
def __init__(self, x, y, radius):
super().__init__(x, y, radius)
#计算体积
def volume(self):
return (4/3) * 3.14 * self.radius**3
#计算面积
def area(self):
return 4 * 3.14 * self.radius**2

def display(self):
print(f"Sphere: center=({self.x}, {self.y}), radius={self.radius}")

#定义圆柱体
class Cylinder(Circle):
def __init__(self, x, y, radius, height):
super().__init__(x, y, radius)
self.height = height
#计算体积
def volume(self):
return 3.14 * self.radius**2 * self.height
#计算面积
def area(self):
base_area = 3.14 * self.radius**2
side_area = 2 * 3.14 * self.radius * self.height
return 2 * base_area + side_area

def display(self):
print(f"Cylinder: center=({self.x}, {self.y}), radius={self.radius}, height={self.height}")
#定义圆锥
class Cone(Circle):
def __init__(self, x, y, radius, height):
super().__init__(x, y, radius)
self.height = height
#计算体积
def volume(self):
return (1/3) * 3.14 * self.radius**2 * self.height
#计算面积
def area(self):
base_area = 3.14 * self.radius**2
side_area = 3.14 * self.radius * ((self.radius**2 + self.height**2)**0.5)
return base_area + side_area

def display(self):
print(f"Cone: center=({self.x}, {self.y}), radius={self.radius}, height={self.height}")


if __name__ == "__main__":
#点
point = Point(1, 2)
point.display()
#圆
circle = Circle(3, 4, 5)
circle.display()
print("圆的周长:", circle.circumference())
print("圆的面积:", circle.area())
#球
sphere = Sphere(3, 4, 5)
sphere.display()
print("球的体积:", sphere.volume())
print("球的表面积:", sphere.area())
#圆柱
cylinder = Cylinder(3, 4, 5, 10)
cylinder.display()
print("圆柱的体积:", cylinder.volume())
print("圆柱的表面积:", cylinder.area())
#圆锥
cone = Cone(3, 4, 5, 10)
cone.display()
print("圆锥的体积:", cone.volume())
print("圆锥的表面积:", cone.area())
posted @   Hbro  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示