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

你可能感兴趣的:(Exam,python,开发语言)