python练习题(3)

1、设计并实现一个数组类,要求能够把包含数字的列表、元组或range对象转换为数组,能够使用包含整数的列表作为下标同时返回多个位置上的元素值。

class CustomeArray():
    arr = []#定义arr列表用于存储输入数据
    def __init__(self, paramArr):
        for i in paramArr:
            self.arr.append(i)

    def __getitem__(self, i):
        if type(i) == list:
            newArr = []
            for subi in i:
                newArr.append(self.arr[subi])
            return newArr
        elif type(i) == int:
            return self.arr[i]

if __name__ == "__main__":#既能保证当前的.py文件直接运行,也能保证其可以作为模块被其他.py文件导入
    cs = CustomeArray([1,2,3,5])#定义cs对象,实现调用
    print(cs[[0,2]])

2.编程实现如下功能: (1)定义一个抽象类Shape,在抽象类 Shape中定义求面积 getArea()和周长 getPerimeter()的抽象方法。 (2)分别定义继承抽象类Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。 (3)创建类Triangle、 Rectangle、 Circle的对象,对3个类中的方法进行调用测试。

from math import pi

class Shape(object):#这里object为以后继承做准备
    def __init__(self):
        pass
    #system auto call function to input r that get Area

    def getPerimeter(self):
        pass

    def getArea(self):
        pass



	#分别定义继承抽象类Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。'''

```python
class Triangle(Shape):
    def __int__(self,a,b,c):
        self.a=a
        self.b=b
        self.c=c

    def getArea(self,a,b,c):
        #(1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)
        return ((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a)/16)**0.5#三角形求面积就是如此

    def getPerimeter(self,a,b,c):
        return (a+b+c)

print('=============三角形求面积和周长==============')
c1=Triangle()
l =c1.getArea(3,5,4)
print(l)
s=c1.getPerimeter(3,5,4)
print(s)

class Circle(Shape):
    def __int__(self, r):
            self.r = r
            self.r = r

    def getArea(self,r):
            # (1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)
            return pi*r**2  # 三角形求面积就是如此

    def getPerimeter(self,r):
            return 2*pi*r

print('=============圆形求面积和周长==============')
c3 = Circle()
l = c3.getArea(6)
print(l)
s = c3.getPerimeter(6)
print(s)

class Rectangle(Shape):
    def __int__(self, a, b):
            self.a = a
            self.b = b

    def getArea(self, a, b):
            # (1/16)(a+b+c)(a+b-c)(a+c-b)(b+c-a)
            return 2*(a+b)  # 三角形求面积就是如此

    def getPerimeter(self, a, b):
            return 2*(a + b )

print('=============矩形求面积和周长==============')
c2 = Rectangle()
l = c2.getArea(3, 5)
print(l)
s = c2.getPerimeter(3, 5)
print(s)

Guess you like

Origin blog.csdn.net/qq_46144237/article/details/109455008