Python 千题持续更新中 ……

脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐

【Python 千题 —— 基础篇】面积计算(多种图形面积计算)_开发语言

题目描述

题目描述

编写一个面向对象的程序,定义一个基类 Shape 和两个派生类 CircleRectangle,用来计算不同图形的面积。基类 Shape 具有一个抽象方法 area(),子类 CircleRectangle 实现具体的面积计算方法。请根据以下要求实现这些类,并计算半径为 7 的圆和长度为 10、宽度为 4 的长方形的面积。

输入描述

输出描述

输出圆的面积和长方形的面积,每个结果保留两位小数。

示例

示例 ①

输出:

153.94
40.00

代码讲解

下面是本题的代码:

from abc import ABC, abstractmethod
import math

# 描述: 定义一个基类 Shape 和两个派生类 Circle 和 Rectangle,用来计算不同图形的面积。
# 输入: 无
# 输出: 输出圆的面积和长方形的面积,每个结果保留两位小数。

# 定义 Shape 抽象基类
class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

# 定义 Circle 类
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius
    
    def area(self):
        # 计算圆的面积
        return math.pi * (self.radius ** 2)

# 定义 Rectangle 类
class Rectangle(Shape):
    def __init__(self, length, width):
        self.length = length
        self.width = width
    
    def area(self):
        # 计算长方形的面积
        return self.length * self.width

# 创建 Circle 和 Rectangle 实例
circle = Circle(7)
rectangle = Rectangle(10, 4)

# 计算并输出圆的面积和长方形的面积,每个结果保留两位小数
print(f"{circle.area():.2f}")
print(f"{rectangle.area():.2f}")

思路讲解

下面是这个Python编程习题的思路讲解,适用于初学者:

  1. 定义 Shape 抽象基类
  • 使用 ABC 模块定义一个抽象基类 Shape,并声明一个抽象方法 area(),该方法在子类中实现。
from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
  1. 定义 Circle
  • 创建 Circle 类继承自 Shape,实现 area() 方法来计算圆的面积。
import math

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return math.pi * (self.radius ** 2)
  1. 定义 Rectangle
  • 创建 Rectangle 类继承自 Shape,实现 area() 方法来计算长方形的面积。
class Rectangle(Shape):
    def __init__(self, length, width):
        self.length = length
        self.width = width

    def area(self):
        return self.length * self.width
  1. 创建实例并计算面积
  • 创建 CircleRectangle 类的实例,分别计算半径为 7 的圆的面积和长度为 10、宽度为 4 的长方形的面积。
circle = Circle(7)
rectangle = Rectangle(10, 4)
  1. 输出结果
  • 使用格式化字符串输出结果,保留两位小数。
print(f"{circle.area():.2f}")
print(f"{rectangle.area():.2f}")
  1. 运行程序
  • 保存代码并运行程序,程序将输出计算结果。

这个习题展示了如何使用面向对象编程中的抽象类和继承来计算不同图形的面积,适合希望深入理解OOP概念的学习者。

相关知识点

这个Python编程习题涉及了以下主要知识点:

  1. 抽象基类
  • 使用 ABC 模块定义抽象基类,并声明抽象方法,确保子类实现这些方法。
from abc import ABC, abstractmethod
  1. 继承和方法重写
  • 子类继承基类并实现具体的方法。
class Circle(Shape):
    def area(self):
        return math.pi * (self.radius ** 2)
  1. 实例化和方法调用
  • 创建类的实例,并调用其方法计算并输出结果。
circle = Circle(7)
print(f"{circle.area():.2f}")
  1. 格式化输出
  • 使用格式化字符串输出浮点数,控制显示的小数位数。
print(f"{circle.area():.2f}")

这个习题适合希望掌握面向对象编程基本概念的初学者,包括抽象类、继承和方法重写。

作者信息


作者 : 繁依Fanyi