BC140 KiKi设计类继承
描述
KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y, 由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。
输入描述:
输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。
输出描述:
三行,分别是矩形、圆、正方形的面积。
示例1
输入:
7 8
10
5
输出:
56
314
25
解答:
class Shape(object):
def __init__(self, x, y):
self.x = x
self.y = y
class Rectangle(Shape):
"""矩形的长和宽"""
def GetArea(self):
"""求面积"""
return self.x * self.y
class Circle(Shape):
"""圆的半径"""
def __init__(self, r):
self.r = r
self.area = 3.14 * self.r ** 2
def GetArea(self):
"""求面积"""
if self.area - int(self.area) == 0: # 如果整数则输出整数,否则输出浮点数
return int(self.area)
else:
return self.area
class Square(Rectangle):
"""正方形Square类,定义各类并测试"""
def __init__(self, a):
self.a = a
def GetArea(self):
return self.a ** 2
x, y = map(float, input().split())
r = float(input())
a = float(input())
rec = Rectangle(x, y)
print(rec.GetArea())
cir = Circle(r)
print(cir.GetArea())
squ = Square(a)
print(squ.GetArea())
解析:
1.定义类,然后实例化。题目的示例显示整数,但没有说不允许浮点数,故加入判断。
20211205