
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