Iridescent:Day28

@浙大疏锦行

https://blog.csdn.net/weixin_45655710?type=blog

作业

题目1: 定义圆 (Circle) 类

要求:

  1. 包含属性:半径 radius.
    2.包含方法:
    ● calculate area(): 计算圆的面积(公式:πr²).
    ● calculate circumference(): 计算圆的周长(公式:2πr).
    3.初始化时需传入半径,默认值为 1.
    1 #示例运行
    2 circle = Circle(5)
    3 print(f"半径:{circle. radius}") #输出:半径:5
    4 print(f"面积:{circle. calculate__area()}") # 输出:面积:78.54(保留两位小数)
    5 print(f"周长:{circle. calculate circumference()}") # 输出:周长:31.42(保留两位小数)
    题目2: 定义长方形 (Rectangle) 类
  2. 包含属性:长 length、宽 width.
    2.包含方法:
    calculate area(): 计算面积(公式:长×宽)。
    ● calculate perimeter(): 计算周长 (公式:2×(长+宽))。is square() 方法,判断是否为正方形(长==宽)。
    3.初始化时需传入长和宽,默认值均为 1.
    1 rect = Rectangle(4, 6)
    2 print(f"长:{rect. length}, 宽:{rect. width}") # 输出:长:4,宽:6
    3 print(f"面积:{rect. calculate area()}") #输出:面积:24
    4 print(f"周长:{rect. calculate__perimeter()}") # 输出:周长:20
    5 print(f"是否为正方形:{rect. is square() }") #输出:是否为正方形:False
    6
    7 square = Rectangle(5, 5)
    8 print(f"是否为正方形:{square. is square() }") # 输出:是否为正方形:True
    题目3:图形工厂
    创建一个工厂函数 create shape(shape type, * args), 根据类型创建不同图形对象:图形工厂(函数或类)
    shape type=" circle": 创建圆(参数:半径)。
    shape type=" rectangle": 创建长方形(参数:长、宽)。
    1 shapel = create shape(" circle", 5)
    2 print(shapel. calculate__circumference()) # 输出:31.42
    3
    4 shape2= create__shape(" rectangle", 3, 4)
    5 print(shape2. is square()) # 输出:False

面向对象编程是 Python 的灵魂。在机器学习中,无论是 Scikit-learn 的 Model 还是 PyTorch 的 nn.Module,本质上都是通过"类"来封装属性(如模型参数)和方法(如训练、预测)。


题目 1:定义圆 (Circle) 类

核心知识点__init__ 初始化方法、self 关键字(指向实例本身)。

python 复制代码
import math

class Circle:
    def __init__(self, radius=1):
        # 属性:半径
        self.radius = radius

    def calculate_area(self):
        # 面积:πr²
        return round(math.pi * self.radius ** 2, 2)

    def calculate_circumference(self):
        # 周长:2πr
        return round(2 * math.pi * self.radius, 2)

# 示例运行
circle = Circle(5)
print(f"半径:{circle.radius}")
print(f"面积:{circle.calculate_area()}")
print(f"周长:{circle.calculate_circumference()}")

题目 2:定义长方形 (Rectangle) 类

核心知识点:多属性初始化、逻辑判断方法。

python 复制代码
class Rectangle:
    def __init__(self, length=1, width=1):
        self.length = length
        self.width = width

    def calculate_area(self):
        return self.length * self.width

    def calculate_perimeter(self):
        return 2 * (self.length + self.width)

    def is_square(self):
        # 判断长宽是否相等
        return self.length == self.width

# 示例运行
rect = Rectangle(4, 6)
print(f"长:{rect.length}, 宽:{rect.width}")
print(f"面积:{rect.calculate_area()}")
print(f"周长:{rect.calculate_perimeter()}")
print(f"是否为正方形:{rect.is_square()}")

square = Rectangle(5, 5)
print(f"是否为正方形:{square.is_square()}")

题目 3:图形工厂

核心知识点:工厂模式(Factory Pattern)的思想。通过一个统一的入口,根据传入的参数动态地创建不同的对象。

python 复制代码
def create_shape(shape_type, *args):
    """
    图形工厂函数
    *args 用于接收不定数量的位置参数,并传递给类的初始化方法
    """
    if shape_type.lower() == "circle":
        # 如果是圆,args[0] 通常是半径
        return Circle(*args)
    elif shape_type.lower() == "rectangle":
        # 如果是长方形,args 包含长和宽
        return Rectangle(*args)
    else:
        raise ValueError("暂不支持该图形类型")

# 示例运行
shape1 = create_shape("circle", 5)
print(f"圆周长:{shape1.calculate_circumference()}")

shape2 = create_shape("rectangle", 3, 4)
print(f"是否为正方形:{shape2.is_square()}")

💡 深度梳理:为什么我们要用类(Class)?

在之前的学习中,我们处理数据通常是用变量和函数。随着项目复杂度增加,你会发现:

  1. 封装性 :类把数据(属性)和处理数据的方法"捆绑"在一起。比如 Circle 对象自己知道自己的半径,也知道怎么算面积,不需要你每次都手动传半径给一个外部函数。
  2. 抽象化 :在工厂函数中,我们只需要关心"我想要一个什么形状",而不需要在主逻辑里去写复杂的 __init__ 初始化过程。这极大简化了代码的调用逻辑。

在接下来的机器学习实践中,你会发现 Pipeline 实际上就是一个巨大的类,它内部封装了各种 Transformer(也是类)和 Estimator(还是类),这种结构化的思维是处理大型项目的基石。加油!

相关推荐
m0_726365832 小时前
大力学习台灯T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 从 Fastboot 无限重启完整恢复(含固件下载地址)
python·github·智能硬件
free-elcmacom2 小时前
机器学习高阶教程<7>Transformer原理全景解读:从“序列困境”到“注意力革命”
人工智能·python·机器学习·transformer
RwwH2 小时前
PyCharm虚拟环境创建
ide·python·pycharm
码海踏浪2 小时前
JMeter 时间函数合集
开发语言·python
serve the people2 小时前
tensorflow 深度解析 Sequential 模型的输入形状指定
人工智能·python·tensorflow
SunnyDays10112 小时前
Python 实现 PDF 文档压缩:完整指南
linux·开发语言·python
长安牧笛2 小时前
设计考研党备考开支追踪程序,记录教材,网课,报名费支出,按科目统计花费,优化备考预算分配。
python
长空任鸟飞_阿康2 小时前
LangChain 技术栈全解析:从模型编排到 RAG 实战
前端·python·langchain
江上鹤.1482 小时前
Day42Dataset和Dataloader
python