根据列表列表计算距离

时间:2019-04-21 22:41:19

标签: python

因此,我最近开始使用Python编程,而我仍在尝试在后者中进行思考。 我有一个大学的小项目,根据列表,我有6个问题。我的老师称它为数组。我不知道这是否是寻求帮助的正确地方,但是我去了: 我已经有了前两个,但是后来我被卡住了。

首先,我必须计算两点之间的欧几里得距离: 列表列表中的每个“单元格”都代表一个正方形,侧面有20m,代表一定的高度。

Altitude = [ [206,205,204,190,208],
             [190,194,206,197,203], 
             [196,196,205,201,193], 
             [194,199,199,206,205], 
             [192,196,195,201,193], 
             [194,199,200,200,205],
             [196,196,195,200,193] ]

from numpy import sqrt
def distance(altitude, side, p1, p2):
    r1 = p1[0]
    r2 = p2[0]
    c1 = p1[1]
    c2 = p2[1]
    w = side
    a1 = altitudes [p1[0]][p1[1]]
    a2= altitudes [p2[0]][p2[1]]
    d =sqrt((w*(r1 - r2))**2+ (w*(c1-c2))**2 + (a1-a2)**2)
    return d

然后我必须创建一个函数来计算给定的“单元格”路径的距离:

def traveled_distance (altitude, side, path):
    dist = 0
    for v in range(len(path)-1):
            dist = dist + distance(altitude, side, path[v], path[v+1])
    return dist

这是我开始陷入困境的地方。 下一个练习包括计算从起始点向北行驶时路径将停止的“单元格”。 请注意,一个人只能前往高度值较高的单元。

我尝试使用if和elif进行“ for循环”,但是无法编写有效的代码。

def climb_north (altitude, start_point):
    alt_north = 0
    for a in altitude (...)

工作的第四部分是实现一个名为:

的函数。
def neighbours(altitude, cell):

返回一个元组列表,其中元组列表也是变量--- cell ---的相邻单元格的坐标(行和列)。 相邻小区位于S,N,W,E,NE,NW,SW和SE。


第五个问题是关于具有较高海拔值的相邻小区的。 该函数应调用:

def higher_neighbour(altitude, cell):

如果单元格的值大于其邻居的值,则应返回自己的坐标; 如果该单元有多个具有相同较高高度的邻居,则它可以返回这些坐标中的任何一个。


在上一练习中,我们被告知编写函数代码

def climb_higher (altitude, cell)

在给定某个“单元格”的情况下,它会返回一个元组列表,其中包含每个访问点的行和列,以便每个单元格移动到海拔更高的相邻单元格,直到达到峰值为止,该单元格是邻居之间最高的

0 个答案:

没有答案