-->
当前位置:首页 > 题库 > 正文内容

程序填空题:平面矩形 - 实验15 面向对象 - 《Python编程基础及应用实验教程》 - 高教社

Luz2年前 (2022-06-24)题库3052
实践中,左上角顶点(top left)的坐标给合右下角顶点(bottom right)的坐标即可以确定一个平面矩形。下述代码中的Rect类即以该种方式来表达矩形。<br>
请将下述代码补充完整,并在计算机上调试运行,确保其输出结果与期望的一致。要求每个空白填入的代码不超过一行。

python
class Rect:
def __init__(self, tl, br):
self.tl, self.br = tl, br

def width(self):
t = self.br.x -
return t if t > 0 else -t

def height(self):
t =
return t if t > 0 else -t

def area(self):
return self.width() *

def topRight(self):
return Point(self.br.x,)

def bottomLeft(self):
return

def diagonalLength(self):
return self.br

class Point:
def __init__(self,x,y):
self.x, self.y = x, y

def __sub__(self,p):
return

def __str__(self):
return str((self.x,self.y))

rt = Rect(Point(1,6),Point(7,8))

print("Vertices of rectangle rt:")
print(f"{rt.tl}-----------------------------{rt.topRight()}")
print(f"{rt.bottomLeft()}-----------------------------{rt.br}")

print("Size information of rectangle rt:")
print(f"width - {rt.width()},height - {rt.height()}")
print(f"area - {rt.area()},diagonal length - "\
f"{rt.diagonalLength():.4f}")


期望的执行结果:<br>

Vertices of rectangle rt:
(1, 6)-----------------------------(7, 6)
(1, 8)-----------------------------(7, 8)
Size information of rectangle rt:
width - 6,height - 2
area - 12,diagonal length - 6.3246



【解题提示】<br>
* Rect的tl属性表示左上角顶点(top left),br属于则是其右下角顶点(bottom right)。
* width()成员函数用于求矩形对象的宽,它等于右下角顶点的x坐标减去左上角顶点的x坐标。
* height()成员函数用于计算矩形对象的高。
* area()成员函数则用于计算矩形的面积,可以通过执行对象的成员函数width()和height()分别取得宽和高,然后相乘而得。
* topRight()和bottomLeft()分别计算矩形的右上角顶点和左下角顶点的坐标,函数预期应返回一个Point类型的对象。
* diagonalLength()则用于计算并返回矩形的对角线长度。注意,Point类型的魔法函数__sub__()应承担计算两点间欧氏距离的职责,点p1 – p2即意味着执行p1对象的__sub__()函数,以p2为参数,“减法”函数应返回两点间的欧氏距离。显然,矩形的对角线长度等于左上角及右下角顶点间的欧氏距离。
* Point的魔法函数__sub__()的实现中,开方操作可以借助\*\*操作符实现。
* 当一个对象作为print()函数参数或作为格式化字符串操作的一部分时,Python解释器会调用该对象的魔法函数__str__()来获取该对象的字符串表达。

<br>**拼尽全力还是不会?参考B站习题讲解**<br>

哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/)
[Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)
[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)
作者每天分享一篇关于C/C++/Python的技术文章,学习编程不迷路。
![image.png](~/7c4cfd2d-8e3e-40cd-826d-299d4200e600.png)








答案:
第1空:self.tl.x

第2空:self.br.y - self.tl.y

第3空:self.height()

第4空:self.tl.y

第5空:Point(self.tl.x,self.br.y)

第6空:- self.tl

第7空:((self.x - p.x)**2 + (self.y - p.y)**2) ** 0.5

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。