繁体   English   中英

如何从列表中表达 x1, y1, x2, y2

[英]How to express x1, y1, x2, y2 from a list

我有一个问题,我需要找到四边形的周长,只知道点的坐标。 当我输入时,我有"# LB3: 5 # RB5: 5 # LT1: 1 # RT2: 6" 我使用正则表达式并删除数字。

要计算四边形的周长,首先我需要找到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 

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

检索数据

  • 你只需要提取真实数据,那些没有粘在单词上的数据,我建议使用单词边界\\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

关于周长的数学

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM