编写Point类,要求: 具有属性:点的坐标(二维或三维) 具有方法:输出X坐标最大的点的坐标。 输出点关于原点的对称点。 分别输出两点间距离最近和最远的距离
时间: 2023-04-10 15:03:58 浏览: 106
C++ 二维 三维 坐标(向量)类 的设计代码下载(2D,3D,点类)
3星 · 编辑精心推荐
好的,我可以回答这个问题。以下是Point类的完整代码:
```python
class Point:
def __init__(self, x, y, z=None):
self.x = x
self.y = y
self.z = z
def max_x(self, points):
max_point = max(points, key=lambda p: p.x)
return max_point.x
def symmetric_point(self):
if self.z is None:
return Point(-self.x, -self.y)
else:
return Point(-self.x, -self.y, -self.z)
def distance(self, other):
if self.z is None:
return ((self.x - other.x) ** 2 + (self.y - other.y) ** 2) ** 0.5
else:
return ((self.x - other.x) ** 2 + (self.y - other.y) ** 2 + (self.z - other.z) ** 2) ** 0.5
def closest_and_farthest_distance(self, points):
closest = float('inf')
farthest = float('-inf')
for p in points:
d = self.distance(p)
if d < closest:
closest = d
if d > farthest:
farthest = d
return closest, farthest
```
其中,max_x方法可以输出X坐标最大的点的坐标,symmetric_point方法可以输出点关于原点的对称点,distance方法可以计算两点间的距离,closest_and_farthest_distance方法可以分别输出两点间距离最近和最远的距离。
阅读全文