如何编写一个函数来计算python中2点之间的中点?

hku*_*s10 2 python

def midpoint(p1, p2):
"""
PRE: p1 and p2 are Point objects (from the graphics module)
POST: a new Point equidistant from and co-linear with p1 and p2
is computed and returned
Run Code Online (Sandbox Code Playgroud)

使用以下规范编写函数中点

Hug*_*ell 11

你使用什么图形模块?(pypi包含几十个,没有一个名为'graphics')Point的界面是什么样的?

如果Point已命名属性(如px,py等),您可以执行类似的操作

def midpoint(p1, p2):
    return Point((p1.x+p2.x)/2, (p1.y+p2.y)/2)
Run Code Online (Sandbox Code Playgroud)

如果Point可以作为列表访问(如p [0],p [1]等),您可以改为

def midpoint(p1, p2):
    return Point((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
Run Code Online (Sandbox Code Playgroud)

如果Point有点加法和标量除法或乘法重载,你可以这样做

def midpoint(p1, p2):
    return (p1+p2)/2     # or *0.5
Run Code Online (Sandbox Code Playgroud)

(虽然严格来说,添加两个点应该没有意义,从另一个点减去一个点应该给你一个Vector - 因此

def midpoint(p1, p2):
    return p1 + (p2-p1)/2     # or *0.5
Run Code Online (Sandbox Code Playgroud)


Dav*_*d Z 5

您可以像编写任何其他函数一样编写它:

def midpoint(x1, y1, x2, y2):
    return ((x1 + x2)/2, (y1 + y2)/2)
Run Code Online (Sandbox Code Playgroud)

或类似的东西。这取决于您是将点表示为单个坐标还是对象或列表等。


San*_*nta 5

自己计算一下?

两点之间的中间点是它们的平均值。那是,

P_mid = (P1 + P2) / 2
Run Code Online (Sandbox Code Playgroud)

如何表示“点”取决于您。它可以是 2D、3D 甚至 nD。您可能想要实现__add__and__div__以及其他“数字”运算。