编写python程序,实现一个自定义函数,计算两个序列中任意两点距离的最小值和最大值, 以及距离最近和最远的两对点在点列中的序号。用自己的学号和学号反序的各位分别作为点的横坐标和纵坐标构造点列,对设计的点列类及其功能进行测试。学号为202115221011
时间: 2024-09-24 11:03:38 浏览: 37
为了编写这个Python程序,首先我们需要创建一个`Point`类,用于存储点的坐标,并提供一个计算两个点之间距离的辅助函数。接着,我们可以定义一个`DistanceCalculator`类,其中包含计算最小距离、最大距离以及对应序号的方法。
```python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def distance(self, other_point):
return ((self.x - other_point.x) ** 2 + (self.y - other_point.y) ** 2) ** 0.5
class DistanceCalculator:
def __init__(self, points):
self.points = points
def min_max_distances_and_indices(self):
# 将学号转换为点列表
my_points = [(i, int('202115221011'[::-1][i])) for i in range(11)]
# 计算所有点对之间的距离
distances = [[point.distance(other_point) for other_point in my_points] for point in my_points]
# 找到最小和最大的距离及对应的序号
min_distance, max_distance, min_idx, max_idx = float('inf'), 0, None, None
for i, row in enumerate(distances):
for j, dist in enumerate(row):
if dist < min_distance:
min_distance, min_idx = dist, (i, j)
if dist > max_distance:
max_distance, max_idx = dist, (i, j)
return min_distance, max_distance, min_idx, max_idx
# 测试我们的类
calculator = DistanceCalculator(my_points)
result = calculator.min_max_distances_and_indices()
print(f"最小距离: {result[0]}, 序号: ({result[2][0]}, {result[2][1]})")
print(f"最大距离: {result[1]}, 序号: ({result[3][0]}, {result[3][1]})")
```
在这个例子中,我们假设学号为202115221011的每位数字对应一个点的坐标,从左到右分别为x坐标,从前往后为y坐标。我们将学号的每一位拆分并创建了11个点。
运行此程序,你会得到最小距离和最大距离以及它们在点列中的位置信息。
阅读全文