2、请用面向对象的方法编程计算圆、矩形、三角形的面积。要求:定义一个形状基类Shape,圆类Circle、矩形类Rectangle、三角形类Triangle是Shape的子类。Shape有一个求解面积的实例方法area(),Circle有半径r的实例属性及重定义父类求解面积的实例方法area(),Rectangle有长宽a,b的实例属性及重定义父类求解面积的实例方法area(),Triangle有三条边a,b,c的实例属性及重定义父类求解面积的实例方法area()。 其中文件shapeClass.py下的基类Shape的定义如下: class Shape: def area(self): return 0.0 任务(1)请在shapeClass.py文件下完成Circle类、Rectangle类、Triangle类的定义。 任务(2)新建一个shapeAreaTest.py文件,实现下图的各功能菜单选项,并实现对应的各个功能模块(即:实现圆、矩形、三角形的面积求解)。
时间: 2023-06-05 14:04:14 浏览: 55
任务(1)Circle类、Rectangle类、Triangle类的定义如下:
class Circle(Shape):
def __init__(self, r):
self.r = r
super().__init__()
def area(self):
return math.pi * self.r ** 2
class Rectangle(Shape):
def __init__(self, a, b):
self.a = a
self.b = b
super().__init__()
def area(self):
return self.a * self.b
class Triangle(Shape):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
super().__init__()
def area(self):
p = (self.a + self.b + self.c) / 2
return math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
注意:在每个类的定义中,都需要继承自Shape基类,并且重定义了基类中的求面积方法area(),以便能够计算并返回对应形状的面积。
任务(2)shapeAreaTest.py文件的实现如下:
import shapeClass
def main():
while True:
print("1. 求解圆形面积")
print("2. 求解矩形面积")
print("3. 求解三角形面积")
print("0. 退出程序")
choice = int(input("请选择:"))
if choice == 1:
r = float(input("请输入圆形半径:"))
c = shapeClass.Circle(r)
print("圆形的面积为:{:.2f}".format(c.area()))
elif choice == 2:
a = float(input("请输入矩形长:"))
b = float(input("请输入矩形宽:"))
r = shapeClass.Rectangle(a, b)
print("矩形的面积为:{:.2f}".format(r.area()))
elif choice == 3:
a = float(input("请输入三角形第一条边长:"))
b = float(input("请输入三角形第二条边长:"))
c = float(input("请输入三角形第三条边长:"))
t = shapeClass.Triangle(a, b, c)
print("三角形的面积为:{:.2f}".format(t.area()))
elif choice == 0:
break
else:
print("输入错误,请重新输入!")
if __name__ == '__main__':
main()
说明:shapeAreaTest.py文件中,实现了一个简单的命令行交互程序,根据用户选择执行不同的面积计算功能,使用input()函数获取用户输入的数据,并调用对应的类和方法来计算并输出面积。最后,如果用户选择退出程序,则跳出循环结束程序的执行。