因此,我最近开始使用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)
在给定某个“单元格”的情况下,它会返回一个元组列表,其中包含每个访问点的行和列,以便每个单元格移动到海拔更高的相邻单元格,直到达到峰值为止,该单元格是邻居之间最高的