打卡day28
知识点回顾:
- 类的定义
- pass占位语句
- 类的初始化方法
- 类的普通方法
- 类的继承:属性的继承、方法的继承
作业
题目1:定义圆(Circle)类
要求:
- 包含属性:半径 radius。
- 包含方法:
- calculate_area():计算圆的面积(公式:πr²)。
- calculate_circumference():计算圆的周长(公式:2πr)。
- 初始化时需传入半径,默认值为 1。
import mathclass Circle:def __init__(self, radius=1):"""初始化圆的半径,默认值为1"""self.radius = radiusdef calculate_area(self):"""计算圆的面积,公式:πr²"""return math.pi * self.radius **2def calculate_circumference(self):"""计算圆的周长,公式:2πr"""return 2 * math.pi * self.radius# 创建半径为5的圆
circle1 = Circle(5)
print(f"面积: {circle1.calculate_area()}")
print(f"周长: {circle1.calculate_circumference()}")# 创建默认半径(1)的圆
circle2 = Circle()
print(f"默认半径圆的面积: {circle2.calculate_area()}")面积: 78.53981633974483
周长: 31.41592653589793
默认半径圆的面积: 3.141592653589793
题目2:定义长方形(Rectangle)类
- 包含属性:长 length、宽 width。
- 包含方法:
- calculate_area():计算面积(公式:长×宽)。
- calculate_perimeter():计算周长(公式:2×(长+宽))。 is_square() 方法,判断是否为正方形(长 == 宽)。
- 初始化时需传入长和宽,默认值均为 1。
class Rectangle:def __init__(self, length=1, width=1):"""初始化长方形的长和宽,默认值均为1"""self.length = lengthself.width = widthdef calculate_area(self):"""计算长方形的面积,公式:长×宽"""return self.length * self.widthdef calculate_perimeter(self):"""计算长方形的周长,公式:2×(长+宽)"""return 2 * (self.length + self.width)def is_square(self):"""判断是否为正方形(长 == 宽)"""return self.length == self.width# 示例用法
if __name__ == "__main__":# 创建一个长为5,宽为3的长方形rect1 = Rectangle(5, 3)print("长为5,宽为3的长方形:")print(f"面积:{rect1.calculate_area()}")print(f"周长:{rect1.calculate_perimeter()}")print(f"是否为正方形:{rect1.is_square()}\n")# 创建一个边长为4的正方形(使用长方形类)square = Rectangle(4, 4)print("边长为4的正方形:")print(f"面积:{square.calculate_area()}")print(f"周长:{square.calculate_perimeter()}")print(f"是否为正方形:{square.is_square()}\n")# 创建一个使用默认值的长方形rect2 = Rectangle()print("默认值的长方形(长1,宽1):")print(f"面积:{rect2.calculate_area()}")print(f"周长:{rect2.calculate_perimeter()}")print(f"是否为正方形:{rect2.is_square()}")长为5,宽为3的长方形:
面积:15
周长:16
是否为正方形:False
边长为4的正方形:
面积:16
周长:16
是否为正方形:True
默认值的长方形(长1,宽1):
面积:1
周长:4
是否为正方形:True
题目3:图形工厂
创建一个工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:图形工厂(函数或类)
shape_type="circle":创建圆(参数:半径)。
shape_type="rectangle":创建长方形(参数:长、宽)。
import math# 圆类定义
class Circle:def __init__(self, radius=1):self.radius = radiusdef calculate_area(self):return math.pi * self.radius **2def calculate_circumference(self):return 2 * math.pi * self.radiusdef __str__(self):return f"圆(半径: {self.radius})"# 长方形类定义
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.widthdef __str__(self):return f"长方形(长: {self.length}, 宽: {self.width})"# 图形工厂函数
def create_shape(shape_type, *args):"""根据图形类型创建对应的图形对象参数:shape_type: 图形类型,"circle"表示圆,"rectangle"表示长方形*args: 图形的参数,圆需要半径,长方形需要长和宽返回:对应的图形对象"""if shape_type.lower() == "circle":# 圆只需要一个参数:半径radius = args[0] if args else 1return Circle(radius)elif shape_type.lower() == "rectangle":# 长方形需要两个参数:长和宽length = args[0] if len(args) > 0 else 1width = args[1] if len(args) > 1 else 1return Rectangle(length, width)else:raise ValueError(f"不支持的图形类型: {shape_type},支持的类型为'circle'和'rectangle'")# 示例用法
if __name__ == "__main__":# 创建圆circle = create_shape("circle", 5)print(circle)print(f"面积: {circle.calculate_area():.2f}")print(f"周长: {circle.calculate_circumference():.2f}\n")# 创建长方形rectangle = create_shape("rectangle", 6, 4)print(rectangle)print(f"面积: {rectangle.calculate_area()}")print(f"周长: {rectangle.calculate_perimeter()}")print(f"是否为正方形: {rectangle.is_square()}\n")# 创建正方形(特殊的长方形)square = create_shape("rectangle", 3, 3)print(square)print(f"面积: {square.calculate_area()}")print(f"是否为正方形: {square.is_square()}\n")# 使用默认参数创建图形default_circle = create_shape("circle")print(default_circle)default_rect = create_shape("rectangle")print(default_rect)圆(半径: 5)
面积: 78.54
周长: 31.42
长方形(长: 6, 宽: 4)
面积: 24
周长: 20
是否为正方形: False
长方形(长: 3, 宽: 3)
面积: 9
是否为正方形: True
圆(半径: 1)
长方形(长: 1, 宽: 1)
@浙大疏锦行