欢迎访问宙启技术站
智能推送

使用get_shape_list()函数实现形状列表生成

发布时间:2024-01-09 16:14:10

get_shape_list()函数是一个生成形状列表的函数。它接受一个整数n作为参数,表示生成形状列表的长度,返回一个包含n个元素的形状列表。

形状列表是一个由各种形状对象组成的列表,每个对象代表一个形状。形状对象可以是矩形、圆形、三角形等等。生成的形状列表中每个元素都是一个形状对象,可以通过调用对象的方法来获取形状的属性,比如面积、周长等等。

下面是get_shape_list()函数的实现代码:

import random

class Shape:
    def __init__(self, name):
        self.name = name

class Rectangle(Shape):
    def __init__(self, name, length, width):
        super().__init__(name)
        self.length = length
        self.width = width
    
    def area(self):
        return self.length * self.width
    
    def perimeter(self):
        return 2 * (self.length + self.width)

class Circle(Shape):
    def __init__(self, name, radius):
        super().__init__(name)
        self.radius = radius
    
    def area(self):
        return 3.14 * self.radius * self.radius
    
    def circumference(self):
        return 2 * 3.14 * self.radius

class Triangle(Shape):
    def __init__(self, name, side1, side2, side3):
        super().__init__(name)
        self.side1 = side1
        self.side2 = side2
        self.side3 = side3
    
    def area(self):
        semi_perimeter = (self.side1 + self.side2 + self.side3) / 2
        return (semi_perimeter * (semi_perimeter - self.side1) * (semi_perimeter - self.side2) * (semi_perimeter - self.side3)) ** 0.5
    
    def perimeter(self):
        return self.side1 + self.side2 + self.side3

def get_shape_list(n):
    shape_list = []
    
    for _ in range(n):
        shape_type = random.choice(['Rectangle', 'Circle', 'Triangle'])
        
        if shape_type == 'Rectangle':
            name = 'Rectangle'
            length = random.randint(1, 10)
            width = random.randint(1, 10)
            shape = Rectangle(name, length, width)
            
        elif shape_type == 'Circle':
            name = 'Circle'
            radius = random.randint(1, 10)
            shape = Circle(name, radius)
            
        else:
            name = 'Triangle'
            side1 = random.randint(1, 10)
            side2 = random.randint(1, 10)
            side3 = random.randint(1, 10)
            shape = Triangle(name, side1, side2, side3)
        
        shape_list.append(shape)
    
    return shape_list

使用get_shape_list()函数生成形状列表的例子:

shape_list = get_shape_list(5)

for shape in shape_list:
    print('Shape:', shape.name)
    
    if isinstance(shape, Rectangle):
        print('Length:', shape.length)
        print('Width:', shape.width)
        print('Area:', shape.area())
        print('Perimeter:', shape.perimeter())
        
    elif isinstance(shape, Circle):
        print('Radius:', shape.radius)
        print('Area:', shape.area())
        print('Circumference:', shape.circumference())
        
    elif isinstance(shape, Triangle):
        print('Side 1:', shape.side1)
        print('Side 2:', shape.side2)
        print('Side 3:', shape.side3)
        print('Area:', shape.area())
        print('Perimeter:', shape.perimeter())
        
    print('---')

上述代码中,我们首先通过调用get_shape_list(5)函数生成了一个包含5个形状对象的形状列表。然后我们遍历形状列表,对于每个形状对象,我们输出了它的名称以及相应的属性,比如长度、宽度、半径等等。最后通过调用对象的方法,我们计算了形状的面积和周长,并输出给用户。

这样,通过调用get_shape_list()函数,我们可以很方便地生成包含各种形状对象的形状列表,使得我们能够灵活地操作这些形状对象,获取它们的属性和执行相关的计算。