Python 面向对象 计算长方体、四棱锥的表面积和体积
Description
计算如下立体图形的表面积和体积。
从图中观察,可抽取其共同属性到父类Rect中:长度:l 宽度:h 高度:z
在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。
定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。
定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。
输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。
Input
输入多行数值型数据(double);
每行三个数值,分别表示l h z
若输入数据中有非正数,则不表示任何图形,表面积和体积均为0。
Output
行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)
下面展示一些 内联代码片
。
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()