Day28
一、定义圆类
import mathclass Circle:def __init__(self, radius=1):self.radius = radiusdef calculate_area(self):return math.pi * (self.radius ** 2)def calculate_circumference(self):return 2 * math.pi * self.radius # 创建半径为 5 的圆
circle = Circle(5)# 计算并打印面积和周长
print(f"圆的面积: {circle.calculate_area()}")
print(f"圆的周长: {circle.calculate_circumference()}")
圆的面积: 78.53981633974483
圆的周长: 31.41592653589793
二、定义长方形类
class Rectangle:def __init__(self, length=1, width=1):self.length = lengthself.width = widthdef calculate_area(self):return self.length * self.widthdef calculate_perimeter(self):return 2 * (self.length + self.width)def is_square(self):return self.length == self.width # 创建长为 5,宽为 3 的长方形
rect = Rectangle(5, 3)# 计算并打印面积和周长
print(f"长方形的面积: {rect.calculate_area()}")
print(f"长方形的周长: {rect.calculate_perimeter()}")
print(f"是否为正方形: {rect.is_square()}")# 创建边长为 4 的正方形
square = Rectangle(4, 4)
print(f"正方形是否为正方形: {square.is_square()}")
长方形的面积: 15
长方形的周长: 16
是否为正方形: False
正方形是否为正方形: True
三、图形工厂
from typing import Unionclass Circle:def __init__(self, radius=1):self.radius = radiusdef calculate_area(self):return 3.14 * self.radius ** 2def calculate_circumference(self):return 2 * 3.14 * self.radiusclass Rectangle:def __init__(self, length=1, width=1):self.length = lengthself.width = widthdef calculate_area(self):return self.length * self.widthdef calculate_perimeter(self):return 2 * (self.length + self.width)def is_square(self):return self.length == self.widthdef create_shape(shape_type: str, *args) -> Union[Circle, Rectangle]:if shape_type == "circle":return Circle(*args)elif shape_type == "rectangle":return Rectangle(*args)else:raise ValueError(f"Unsupported shape type: {shape_type}") # 创建半径为 5 的圆
circle = create_shape("circle", 5)
print(f"圆面积: {circle.calculate_area()}")# 创建长 4、宽 3 的长方形
rectangle = create_shape("rectangle", 4, 3)
print(f"长方形周长: {rectangle.calculate_perimeter()}")# 创建正方形(特殊长方形)
square = create_shape("rectangle", 5, 5)
print(f"是否为正方形: {square.is_square()}")# 错误示例(会抛出异常)
# create_shape("triangle", 3, 4, 5)
圆面积: 78.5
长方形周长: 14
是否为正方形: True
@浙大疏锦行