如何从列表中表示x1、y1、x2、y2

2024-05-19 03:04:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我需要找到四边形的周长,只知道点的坐标。键入时,我有"# LB3: 5 # RB5: 5 # LT1: 1 # RT2: 6"。我使用regex和drop数字

要计算四边形的周长,首先我需要找到dist。从列表a中,我表示 x1, y1, x2, y2

dist = sqrt ((x2 - x1) ** 2 + (y2 - y1) ** 2)

我的代码:

def perimetr(data):
    a = []
    result = re.findall(r'\d',data)
    for i in result:
        a.append(i)
    #dist = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
    return a 

введите сюда описание изображения


Tags: data键入distsqrtresultx1x2y1
1条回答
网友
1楼 · 发布于 2024-05-19 03:04:29

检索数据

  • 您只需要提取真实的数据,而不是固定在单词上的数据,我建议使用单词边界\b,因此正则表达式\b\d+\b

  • re.findall已返回一个列表

  • 您有一个str列表,需要整数:map(int, re.findall(r'\b\d+\b', data))


坐标定义

  1. 列表索引

    dist = sqrt((a[2] - a[0]) ** 2 + (a[3] - a[1]) ** 2)
    
  2. 拆包

    x1, y1, x2, y2 = a
    

Math关于周长

周长是边的长度,公式是这样的

2 * (x2 - x1) + 2 * (y2 - y1)

你的公式sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)是关于勾股曲线和假肢长度的,所以在你的例子中是对角线长度


解决方案

def perimetr(data):
    x1, y1, x2, y2 = map(int, re.findall(r'\b\d+\b', data))
    return sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)

相关问题 更多 >

    热门问题