Python 如何处理与多段线的二维坐标相关的问题

Python 如何处理与多段线的二维坐标相关的问题,python,polyline,Python,Polyline,我有一个多边形线坐标的字符串输入: (1,2)(2,3)(4,5)(8,9) 我有以下职能:- def distance(p1,p2): 如何将值(1,2)和(2,3)发送到p1和p2等,并计算每个点之间的距离?收集输入(是一个字符串): in_coord=input('请以“x y x y”格式输入坐标:') 然后将输入转换为集合: in_conv=[int(i)for i in_coord if i!='] p_列表=[] 对于范围内的e(0,len(in_conv),2): p_l

我有一个多边形线坐标的字符串输入:

 (1,2)(2,3)(4,5)(8,9)
我有以下职能:-

def distance(p1,p2):
如何将值
(1,2)
(2,3)
发送到
p1
p2
等,并计算每个点之间的距离?

收集输入(是一个字符串):

in_coord=input('请以“x y x y”格式输入坐标:')
然后将输入转换为集合:

in_conv=[int(i)for i in_coord if i!=']
p_列表=[]
对于范围内的e(0,len(in_conv),2):
p_list.append((in_conv[e],in_conv[e+1]))
现在将它们发送到您的函数:

def距离(p1、p2):
打印(f'Result of{p1}和{p2}')
对于范围内的i(0,len(p_列表),2):
距离(p_列表[i],p_列表[i+1])
所以在实践中看起来是这样的:

>>>in_coord=input('请以“x y x y”格式输入坐标:')
请以“x y x y”格式输入坐标:1 2 3 4 8 9
>>>in_conv=[int(i)for i in_coord if i!=']
>>>p_列表=[]
>>>对于范围内的e(0,len(in_conv),2):
...     p_list.append((in_conv[e],in_conv[e+1]))
... 
>>>def距离(p1、p2):
...     打印(f'Result of{p1}和{p2}')
... 
>>>对于范围内的i(0,len(p_列表),2):
...     距离(p_列表[i],p_列表[i+1])
... 
(1,2)和(2,3)的结果
(4,5)和(8,9)的结果

如果要获取原始字符串,请替换此字符串以生成p_列表:

x='(1,2)(2,3)(4,5)(8,9)'
p_列表=[]
对于x中的i:
尝试:
p_列表附加(int(i))
除值错误外:
通过
收集输入(一个字符串):

in_coord=input('请以“x y x y”格式输入坐标:')
然后将输入转换为集合:

in_conv=[int(i)for i in_coord if i!=']
p_列表=[]
对于范围内的e(0,len(in_conv),2):
p_list.append((in_conv[e],in_conv[e+1]))
现在将它们发送到您的函数:

def距离(p1、p2):
打印(f'Result of{p1}和{p2}')
对于范围内的i(0,len(p_列表),2):
距离(p_列表[i],p_列表[i+1])
所以在实践中看起来是这样的:

>>>in_coord=input('请以“x y x y”格式输入坐标:')
请以“x y x y”格式输入坐标:1 2 3 4 8 9
>>>in_conv=[int(i)for i in_coord if i!=']
>>>p_列表=[]
>>>对于范围内的e(0,len(in_conv),2):
...     p_list.append((in_conv[e],in_conv[e+1]))
... 
>>>def距离(p1、p2):
...     打印(f'Result of{p1}和{p2}')
... 
>>>对于范围内的i(0,len(p_列表),2):
...     距离(p_列表[i],p_列表[i+1])
... 
(1,2)和(2,3)的结果
(4,5)和(8,9)的结果

如果要获取原始字符串,请替换此字符串以生成p_列表:

x='(1,2)(2,3)(4,5)(8,9)'
p_列表=[]
对于x中的i:
尝试:
p_列表附加(int(i))
除值错误外:
通过

由于输入是字符串,因此必须将其转换为int(或float)元组并调用函数。
组合
函数提供给定点之间的所有组合

来自itertools导入组合的

def距离(p1、p2):
返回(p1[0]-p2[0])**2+(p1[1]-p2[1])
输入作为字符串='(1,2)(2,3)(4,5)(8,9)'
string_坐标=输入_作为_string.replace(')(',':')).replace('(','').replace('),'').split(':'))
对于字符串_p1,字符串_p2的组合(字符串_坐标,2):
p1=列表(映射(浮点,字符串_p1.split(','))
p2=列表(映射(浮点,字符串_p2.split(','))
打印(距离(p1、p2))

我为测试编写了一个小函数,用于
距离
,但必须用您的替换。

由于您的输入是字符串,您必须将其转换为int(或float)元组并调用您的函数。
组合
函数提供给定点之间的所有组合

来自itertools导入组合的

def距离(p1、p2):
返回(p1[0]-p2[0])**2+(p1[1]-p2[1])
输入作为字符串='(1,2)(2,3)(4,5)(8,9)'
string_坐标=输入_作为_string.replace(')(',':')).replace('(','').replace('),'').split(':'))
对于字符串_p1,字符串_p2的组合(字符串_坐标,2):
p1=列表(映射(浮点,字符串_p1.split(','))
p2=列表(映射(浮点,字符串_p2.split(','))
打印(距离(p1、p2))

我为测试编写了一个小函数,用于
距离
,但必须用您的函数替换它。

您的问题是如何使用函数还是如何计算点之间的距离?我的问题是如何存储用户输入并将其传递给函数参数。基本上,存储和检索数据的数据类型是什么?检查下面的答案,如果它符合您的需要,则投票/标记接受。您的问题是如何使用函数还是如何计算点之间的距离?我的问题是如何存储用户输入并将其传递给函数参数。基本上,存储和检索数据的数据类型是什么?请检查下面的答案,如果它符合您的需要,请投票/标记接受。