#计算圆形,扇形,正方形,长方形,三角形的面积和周长
#模块一:定义图形类
class Shape():
def __init__(self):
self.name=''
self.perimeter=0.0
self.area=0.0
def show_name(self):
pass
def colleage_data(self):
pass
def operation(self):
pass
def operating_results(self):
print('周长:{:.2f}'.format(self.perimeter))
print('面积:{:.2f}'.format(self.area))
def main(self):
self.show_name()
Shape.print_line()
self.colleage_data()
Shape.print_line()
self.operation()
self.operating_results()
Shape.print_line()
@staticmethod
def print_line():
print('-'*40)
@staticmethod
def print_double_line():
print('='*40)
#模块二:定义圆形类,继承图形类部分属性
from shape import Shape
import math
class Circle(Shape):
def __init__(self):
super (Circle,self).__init__()
self.name='圆形'
self.r=0
def colleage_data(self):
self.r=int(input('请输入半径:'))
def operation(self):
self.perimeter=math.pi*2*self.r
self.area=math.pi*self.r*self.r
if __name__ == '__main__':
circle=Circle()
circle.main()
#模块三:定义扇形类,继承圆形类部分属性
from circle import Circle
class Sector(Circle):
def __init__(self):
super(Sector,self).__init__()
self.name='扇形'
self.angle=0
def colleage_data(self):
super(Sector, self).colleage_data()
self.angle=int(input('请输入圆心角:'))
def operation(self):
super(Sector, self).operation()
self.perimeter=self.perimeter*self.angle/360+2*self.r
self.area= self.area*self.angle/360
if __name__ == '__main__':
s=Sector()
s.main()
#模块四:定义正方形类,继承图形类部分属性
from shape import Shape
class Square(Shape):
def __init__(self):
super(Square,self).__init__()
self.name='正方形'
self.side=0
def colleage_data(self):
self.side=float(input('请输入边长:'))
def operation(self):
self.perimeter=self.side*4
self.area=self.side*self.side
if __name__ == '__main__':
s = Square()
s.main()
#模块五:定义长方形类,继承正方形类部分属性
from square import Square
class Rectangle(Square):
def __init__(self):
super(Rectangle,self).__init__()
self.name='长方形'
self.high=0
def colleage_data(self):
super(Rectangle,self).colleage_data()
self.high=float(input('请输入高:'))
def operation(self):
self.perimeter=(self.side+self.high)*2
self.area=self.side*self.high
if __name__ == '__main__':
r=Rectangle()
r.main()
#模块六:定义三角形类,继承长方形部分属性
from rectangle import Rectangle
class Triangle(Rectangle):
def __init__(self):
super(Triangle,self).__init__()
self.name='三角形'
self.length1=0
self.length2=0
def colleage_data(self):
super(Triangle,self).colleage_data()
self.length1=float(input('请输入第二条边长:'))
self.length2= float(input('请输入第三条边长:'))
def operation(self):
self.perimeter=self.side+self.length1+self.length2
self.area=self.side*self.high
if __name__ == '__main__':
t=Triangle()
t.main()
模块七:调用以上模块,定义应用程序类,编写应用程序逻辑框架
from circle import Circle
from sector import Sector
from square import Square
from rectangle import Rectangle
from triangle import Triangle
from shape import Shape
class App(object):
def __init__(self):
self.list=[Circle(),Sector(),Square(),Rectangle(),Triangle()]
self.version='V0.1'
Shape.print_double_line()
def show_shape(self):
for x,shape in enumerate(self.list):
print('{:<10}{}'.format(x+1,shape.name))
Shape.print_line()
def calc(self):
while True:
self.show_shape()
idx=input('请输入图形序号(输入q退出):')
if idx == 'q':
print('欢迎下次使用')
break
while int(idx)<1 or int(idx)>5:
idx = input('输入有误,请重新输入图形序号:')
w=self.list[int(idx)-1]
w.main()
def main(self):
print('*****几何计算器*****')
print('{}'.format(self.version))
self.calc()
if __name__ == '__main__':
a=App()
a.main()