Python 面向对象 计算长方体、四棱锥的表面积和体积

Python 面向对象 计算长方体、四棱锥的表面积和体积
Description
计算如下立体图形的表面积和体积。
Python 面向对象 计算长方体、四棱锥的表面积和体积_第1张图片

从图中观察,可抽取其共同属性到父类Rect中:长度:l 宽度:h 高度:z

在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。

定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。

定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。

输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。

Input
输入多行数值型数据(double);

每行三个数值,分别表示l h z

若输入数据中有非正数,则不表示任何图形,表面积和体积均为0。

Output
行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)
Python 面向对象 计算长方体、四棱锥的表面积和体积_第2张图片
下面展示一些 内联代码片

import math
import decimal
class Rect(object):
    def __init__(self,l,h,z):
        self.l = l
        self.h = h
        self.z = z

    def length(self):
        return 2*(self.l+self.h)

    def area(self):
        return self.l*self.h


class Cubic(Rect):
    def __init__(self,l,h,z):
        super(Cubic,self).__init__(l,h,z)

    #表面积
    def area(self):
        return 2*(self.l*self.h) + 2*(self.h*self.z) + 2* (self.l*self.z)

    def tj(self):
        return super(Cubic,self).area() * self.z


    def show(self):
        print('{} {}'.format(decimal.Decimal(self.area()).quantize(decimal.Decimal('0.00')),decimal.Decimal(self.tj()).quantize(decimal.Decimal('0.00'))),end=' ')

class Pyramid(Rect):
    def __init__(self,l,h,z):
        super(Pyramid,self).__init__(l,h,z)

    #表面积
    def area(self):
        return self.l*self.h + self.h*math.sqrt(self.z**2+(self.l/2)**2) + math.sqrt(self.z**2+(self.h/2)**2)*self.l

    #体积
    def tj(self):
        return super(Pyramid,self).area() * self.z / 3

    def show(self):
        print('{} {}'.format(decimal.Decimal(self.area()).quantize(decimal.Decimal('0.00')),decimal.Decimal(self.tj()).quantize(decimal.Decimal('0.00'))))

if __name__ == '__main__':
    while True:
        list = []
        list = input().split(' ')
        a = float(list[0])
        b = float(list[1])
        c = float(list[2])
        if a <= 0 or b <= 0 or c <= 0:
            print('0.00 0.00 0.00 0.00')
        else:
            m = Cubic(a, b, c)
            m.show()
            n = Pyramid(a, b, c)
            n.show()

本人也是刚学Python的面向对象,看到网上没有这部分相关代码,故把自己代码分享,由于刚刚接触,所以可能代码写的很糟,请各位大佬斧正

你可能感兴趣的:(Python,python)