如何编写一个计算两个点中点的Python函数?

6 投票
7 回答
57805 浏览
提问于 2025-04-16 12:06
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

写一个名为midpoint的函数,具体要求如下:

7 个回答

5

自己算一下吧?

两个点之间的中间点就是它们的平均值。也就是说,

P_mid = (P1 + P2) / 2

“点”可以用你喜欢的方式来表示。它可以是二维的、三维的,甚至是多维的。你可能还想实现一些加法、除法等“数值”操作。

6

你可以像写其他函数一样来写它:

def midpoint(x1, y1, x2, y2):
    return ((x1 + x2)/2, (y1 + y2)/2)

或者类似这样。具体写法取决于你是把点表示成单独的坐标,还是用对象、列表等其他方式。

15

你正在使用哪个图形模块?(pypi上有好几十个模块,但没有一个叫'graphics')一个点(Point)的接口长什么样子?

如果点有命名的属性(比如p.x, p.y等),你可以这样做:

def midpoint(p1, p2):
    return Point((p1.x+p2.x)/2, (p1.y+p2.y)/2)

如果点可以像列表一样访问(比如p[0], p[1]等),你可以这样做:

def midpoint(p1, p2):
    return Point((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)

如果点支持点的加法和标量的除法或乘法,你可以这样做:

def midpoint(p1, p2):
    return (p1+p2)/2     # or *0.5

(严格来说,把两个点相加是没有意义的,从一个点减去另一个点应该得到一个向量 - 所以:

def midpoint(p1, p2):
    return p1 + (p2-p1)/2     # or *0.5

撰写回答