Files

113 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

---
id: 5e444147903586ffb414c94f
title: 多边形面积计算器
challengeType: 10
forumTopicId: 462363
dashedName: polygon-area-calculator
---
# --description--
你将通过使用我们的[Replit 入门代码](https://replit.com/github/freeCodeCamp/boilerplate-polygon-area-calculator)来完成本项目。
# --instructions--
在这个项目中,你将使用面向对象的编程来创建 Rectangle矩形 类和 Square正方形 类。 Square 类应该是 Rectangle 的子类,并继承方法和属性。
## Rectangle 类
创建 Rectangle 对象时,应使用 `width``height` 属性对其进行初始化。 该类还应包含以下方法:
- `set_width`
- `set_height`
- `get_area`:返回面积(`width * height`
- `get_perimeter`:返回周长(`2 * width + 2 * height`
- `get_diagonal`:返回对角线 (`(width ** 2 + height ** 2) ** .5`)
- `get_picture`:返回一个字符串,该字符串使用包含“\*”的行来表示形状。 行数应等于高度,每行中“\*”的数量应等于宽度。 每行末尾应该有一个新行 (`\n`)。 如果宽度或高度大于 50则应返回字符串“Too big for picture.”。
- `get_amount_inside`:以另一个形状(正方形或矩形)作为参数。 返回传入的形状可以装进该形状的次数(没有旋转)。 例如,一个宽为 4高为 8 的矩形可以放入两个边长为 4 的正方形。
另外,如果一个 Rectangle 实例被表示为一个字符串,它应该看起来像: `Rectangle(width=5, height=10)`
## Square 类
Square 类应该是 Rectangle 的子类。 创建 Square 对象时,传入单边长度。 `__init__` 方法应该在 Rectangle 类的 `width``height` 属性中存储边长。
Square 类应该能够访问 Rectangle 类方法,但还应该包含一个 `set_side` 方法。 如果 Square 的实例表示为字符串,则它应该如下所示:`Square(side=9)`
此外Square 类的 `set_width``set_height` 方法应该设置宽度和高度。
## 使用示例
```py
rect = shape_calculator.Rectangle(10, 5)
print(rect.get_area())
rect.set_height(3)
print(rect.get_perimeter())
print(rect)
print(rect.get_picture())
sq = shape_calculator.Square(9)
print(sq.get_area())
sq.set_side(4)
print(sq.get_diagonal())
print(sq)
print(sq.get_picture())
rect.set_height(8)
rect.set_width(16)
print(rect.get_amount_inside(sq))
```
该代码应该返回:
```bash
50
26
Rectangle(width=10, height=3)
**********
**********
**********
81
5.656854249492381
Square(side=4)
****
****
****
****
8
```
此项目的单元测试在 `test_module.py` 中。
## 开发
`shape_calculator.py` 中编写你的代码。 对于开发,你可以使用 `main.py` 来测试你的 `shape_calculator()` 函数。 单击“运行”按钮,`main.py` 将运行。
## 测试
为了你的方便,我们将测试从 `test_module.py` 导入到 `main.py`。 只要你点击“运行”按钮,测试就会自动运行。
## 提交
复制项目的 URL 并将其提交给 freeCodeCamp。
# --hints--
应该创建一个 Rectangle 类和一个 Square 类,并通过所有测试。
```js
```
# --solutions--
```js
/**
Backend challenges don't need solutions,
because they would need to be tested against a full working project.
Please check our contributing guidelines to learn more.
*/
```