python中基于坐标报告长度的程序



你好,我正在尝试编写一个程序,允许用户将旅行作为任意数量的地图引用的序列输入一行,并报告旅行的总长度,假设他们可以走直线。

期望的输出是

Enter Trip Map References: E6 E4 D7 d43 F5
Bad reference: d43

0 r

Enter Trip Map References: C2 B5 Y25
Total distance = 16.8km
目前我的代码是:
dict = {}
n = input("Enter trip map references: ") . split()
print (n)
for i in n:
if i.isupper()==False:
print("Bad reference: ",i)
else:
i = i.lower()
for character.isalpha() == True:
number = ord(character) -96
character = character.upper()
dict[character] = number
print(dict)
for i in n:
x = i[0]
y = i[1]
if x in dict:
i = (dict[x],int(y))

我的问题是我不得不选择每个坐标并执行毕达哥拉斯公式(sqrt((x2-x1)^2+(y2-y1)^2)的坐标2。毕达哥拉斯公式应该从前两个坐标开始执行,然后是第2和第3,然后是第3和第4,依此类推。

我怎样才能做到这一点?

你可以这样计算公式:

from math import sqrt
point1 = (0,0)
point2 = (1,1)
result = (sqrt(point2[0] - point1[0]))**2 + (sqrt(point2[1]-point1[1]))**2

一个抽象的例子是。

points = [p1,p2,p3,p4]
for i in range(1,len(points)):
j = i - 1
p1 = points[i]
p2 = points[j]
result = (sqrt(p2[0] - p1[0]))**2 + (sqrt(p2[1]-p1[1]))**2

您也可以尝试在数学模块中使用hypot函数,如Ture pamatsson

所建议的。

最新更新