Python 千题持续更新中 …… |
脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ |
题目描述
题目描述
编写一个面向对象的程序,定义一个基类 Shape
和两个派生类 Circle
和 Rectangle
,用来计算不同图形的面积。基类 Shape
具有一个抽象方法 area()
,子类 Circle
和 Rectangle
实现具体的面积计算方法。请根据以下要求实现这些类,并计算半径为 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编程习题的思路讲解,适用于初学者:
-
定义
Shape
抽象基类:- 使用
ABC
模块定义一个抽象基类Shape
,并声明一个抽象方法area()
,该方法在子类中实现。
from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass
- 使用
-
定义
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)
- 创建
-
定义
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
- 创建
-
创建实例并计算面积:
- 创建
Circle
和Rectangle
类的实例,分别计算半径为7
的圆的面积和长度为10
、宽度为4
的长方形的面积。
circle = Circle(7) rectangle = Rectangle(10, 4)
- 创建
-
输出结果:
- 使用格式化字符串输出结果,保留两位小数。
print(f"{circle.area():.2f}") print(f"{rectangle.area():.2f}")
-
运行程序:
- 保存代码并运行程序,程序将输出计算结果。
这个习题展示了如何使用面向对象编程中的抽象类和继承来计算不同图形的面积,适合希望深入理解OOP概念的学习者。
相关知识点
这个Python编程习题涉及了以下主要知识点:
-
抽象基类:
- 使用
ABC
模块定义抽象基类,并声明抽象方法,确保子类实现这些方法。
from abc import ABC, abstractmethod
- 使用
-
继承和方法重写:
- 子类继承基类并实现具体的方法。
class Circle(Shape): def area(self): return math.pi * (self.radius ** 2)
-
实例化和方法调用:
- 创建类的实例,并调用其方法计算并输出结果。
circle = Circle(7) print(f"{circle.area():.2f}")
-
格式化输出:
- 使用格式化字符串输出浮点数,控制显示的小数位数。
print(f"{circle.area():.2f}")
这个习题适合希望掌握面向对象编程基本概念的初学者,包括抽象类、继承和方法重写。希望这个模板对你有所帮助,如果有任何问题,随时提出!
作者信息 作者 : 繁依Fanyi CSDN: https://techfanyi.blog.csdn.net 掘金:https://juejin.cn/user/4154386571867191 |