如何编写一个计算两个点中点的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
写一个名为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