Python打卡第28天

@浙大疏锦行

类的定义和方法

一个常见的类的定义包括了:
1. 关键字class
2. 类名
3. 语法固定符号冒号(:)
4. 一个初始化函数__init__(self)  

注意:注意:init左右各有两个下划线__,需要传入self这个特殊的参数。

作业

题目1:定义圆(Circle)类

要求:

  1. 包含属性:半径 radius。
  2. 包含方法:
  • calculate_area():计算圆的面积(公式:πr²)。
  • calculate_circumference():计算圆的周长(公式:2πr)。
  1. 初始化时需传入半径,默认值为 1。

# 示例运行

circle = Circle(5)

print(f"半径:{circle.radius}") # 输出:半径:5

print(f"面积:{circle.calculate_area()}") # 输出:面积:78.54(保留两位小数)

print(f"周长:{circle.calculate_circumference()}") # 输出:周长:31.42(保留两位小数)

import math

class Circle:
    def __init__(self, radius=1):
        self.radius = radius  # 初始化半径,默认值为1

    def calculate_area(self):
        """计算圆的面积(πr²),结果保留两位小数"""
        area = math.pi * self.radius ** 2
        return round(area, 2)  # 保留两位小数

    def calculate_circumference(self):
        """计算圆的周长(2πr),结果保留两位小数"""
        circumference = 2 * math.pi * self.radius
        return round(circumference, 2)

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

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

  1. 包含属性:长 length、宽 width。
  2. 包含方法:
  • calculate_area():计算面积(公式:长×宽)。
  • calculate_perimeter():计算周长(公式:2×(长+宽))。 is_square() 方法,判断是否为正方形(长 == 宽)。
  1. 初始化时需传入长和宽,默认值均为 1。
#示例

rect = Rectangle(4, 6)

print(f"长:{rect.length}, 宽:{rect.width}") # 输出:长:4, 宽:6

print(f"面积:{rect.calculate_area()}") # 输出:面积:24

print(f"周长:{rect.calculate_perimeter()}") # 输出:周长:20

print(f"是否为正方形:{rect.is_square()}") # 输出:是否为正方形:False

square = Rectangle(5, 5)

print(f"是否为正方形:{square.is_square()}") # 输出:是否为正方形:True

import math

class Rectangle:
    def __init__(self,length, width):
        self.length = length  
        self.width = width

    def calculate_area(self):
        area = self.length * self.width
        return round(area, 2)  # 保留两位小数

    def calculate_circumference(self):
        circumference = 2 * self.width + 2 * self.length
        return round(circumference, 2)

    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_circumference()}")  

square = Rectangle(5, 5)
print(f"是否为正方形:{square.is_square()}")  # 输出:是否为正方形:True
长:4, 宽:6
面积:24
周长:20
是否为正方形:True

题目3:图形工厂

创建一个工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:图形工厂(函数或类)

shape_type="circle":创建圆(参数:半径)。

shape_type="rectangle":创建长方形(参数:长、宽)。

#示例

shape1 = create_shape("circle", 5)

print(shape1.calculate_circumference()) # 输出:31.42

shape2 = create_shape("rectangle", 3, 4)

print(shape2.is_square()) # 输出:False

import math

class Circle:
    def __init__(self, radius=1):
        self.radius = radius

    def calculate_area(self):
        return round(math.pi * self.radius ** 2, 2)

    def calculate_circumference(self):
        return round(2 * math.pi * self.radius, 2)

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

def create_shape(shape_type, *args):
    if shape_type == "circle":
        return Circle(*args)  # 传入半径
    elif shape_type == "rectangle":
        return Rectangle(*args)  # 传入长和宽
    else:
        raise ValueError(f"Unknown shape type: {shape_type}")

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

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

用类

import math

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def calculate_area(self):
        return round(math.pi * self.radius ** 2, 2)

    def calculate_circumference(self):
        return round(2 * math.pi * self.radius, 2)

class Rectangle:
    def __init__(self, length, width):
        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

# ========== 图形工厂(类实现) ==========
class ShapeFactory:
    @staticmethod
    def create_shape(shape_type, *args):
        if shape_type == "circle":
            return Circle(*args)      # 返回 Circle 实例
        elif shape_type == "rectangle":
            return Rectangle(*args)   # 返回 Rectangle 实例
        else:
            raise ValueError("无效的图形类型")

# 示例运行
    factory = ShapeFactory()

    # 创建圆形
    shape1 = factory.create_shape("circle", 4)
    print("圆的周长:", shape1.calculate_circumference())  

    # 创建长方形
    shape2 = factory.create_shape("rectangle", 3,3)
    print("是否为正方形:", shape2.is_square())  # 输出: False
圆的周长: 25.13
是否为正方形: True

你可能感兴趣的:(Python打卡60天,python,开发语言,机器学习)