Python 使用距离公式计算两点之间的距离
所以我需要计算当前点和参数中指定的另一点之间的距离&返回计算的距离 我的打印报表需要如下所示:Python 使用距离公式计算两点之间的距离,python,wing-ide,Python,Wing Ide,所以我需要计算当前点和参数中指定的另一点之间的距离&返回计算的距离 我的打印报表需要如下所示: > print p1.distance(p2) 5.0 我当前的代码: import math class Geometry (object): next_id = 0 def __init__(self): self.id = Geometry.next_id Geometry.next_id += 1 geo1 = Geometry
> print p1.distance(p2)
5.0
我当前的代码:
import math
class Geometry (object):
next_id = 0
def __init__(self):
self.id = Geometry.next_id
Geometry.next_id += 1
geo1 = Geometry()
print geo1.id
geo2 = Geometry()
print geo2.id
class Point(Geometry):
next_id = 0
def __init__(self,x,y,):
self.x = x
self.y = y
self.id = Point.next_id
Point.next_id += 1
def __str__(self):
return "(%0.2f, %0.2f)" % (self.x, self.y)
def identify():
if(p0.id == p1.id):
print "True"
else:
print "False"
def equality():
if (self.x == self.y):
print "True"
else:
print "False"
def distance(p0, p1):
p1 = pts1
pts1 = [(7.35,8.20)]
p0 = pts0
pts0 = [(5,5)]
dist = math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)
return dist
p0 = Point(5,5)
print p0.id
p1 = Point(7.35,8.20)
print p1.id
print p1
print p0 == p1
print p0.id == p1.id
我不知道如何在我的Point类中分离x&y值,以便在方程式中使用
def distance(self, other):
return math.sqrt((self.x - other.x)**2 + (self.y - other.y)**2)
您从未为某个点[index]
定义行为,因此失败。以保存变量的方式访问变量
您从未为
某个点[index]
定义行为,因此失败。以保存变量的方式访问变量。应使用p0.x
,p0.y
,p1.x
,p1.y
。但是您不应该覆盖参数变量
def distance(p0, p1):
dist = math.sqrt((p0.x - p1.x)**2 + (p0.y - p1.y)**2)
return dist
您应该使用
p0.x
,p0.y
,p1.x
,p1.y
。但是您不应该覆盖参数变量
def distance(p0, p1):
dist = math.sqrt((p0.x - p1.x)**2 + (p0.y - p1.y)**2)
return dist
你的
distance
方法应该在它自己的点(self
,就像你在\uuuu str\uuuu
中所做的那样)和另一个点(也可以称之为p
,或者类似于other
)上运行
示例用法:
p0 = Point(2, 4)
p1 = Point(6, 1)
print(str(p0.distance(p1)))
# 5.0
你的
distance
方法应该在它自己的点(self
,就像你在\uuuu str\uuuu
中所做的那样)和另一个点(也可以称之为p
,或者类似于other
)上运行
示例用法:
p0 = Point(2, 4)
p1 = Point(6, 1)
print(str(p0.distance(p1)))
# 5.0
您在
\uuu str\uuuu
方法中完全可以做到这一点……您的p1=pts1
代码在声明变量之前分配了pts1
,这发生在下一行。为什么要给参数变量赋值p0
和p1
?为什么点
类自己赋值self.id
,不只是调用父类的\uuuuu init\uuuu
方法?在\uuuuu str\uuuu
方法中完全可以做到这一点……您的p1=pts1
代码在声明pts1
变量之前分配它,这发生在下一行。为什么要给参数变量赋值p0
和p1
?为什么点
类自己赋值self.id
而不是只调用父类的\uuu init\uuuu
方法?这是一个包含两个点的模块级函数吗,或者这是一种只取一个点的方法(并使用p0
作为p1
的同义词)?或者它只是缺少了@staticmethod
?它是一个类方法,p0
是调用该方法的对象。这只是一个惯例,叫它self
。我想我可能违反了PEP8规则。我只是从OP的代码中复制了这一点。我最初打算忽略它,因为它只是一个PEP-8的吹毛求疵。然后我认为您缺少了@staticmethod
。然后我想你已经把它移到了模块级别,并把它变成了一个函数。然后我意识到我只是在猜测,于是停下来问路。(为了记录在案,我认为OP使用了p0
,这表明他或她对方法的第一个参数是如何工作的感到困惑。这就是为什么我在回答中将它改为self
——使它看起来更像是被理解的\u str\u
方法。)我承认我一点也没想过。我刚才正在解决OP访问x
和y
属性的问题。这是一个取两点的模块级函数,还是一个取一点的方法(并使用p0
作为p1
的同义词)?或者它只是缺少了@staticmethod
?它是一个类方法,p0
是调用该方法的对象。这只是一个惯例,叫它self
。我想我可能违反了PEP8规则。我只是从OP的代码中复制了这一点。我最初打算忽略它,因为它只是一个PEP-8的吹毛求疵。然后我认为您缺少了@staticmethod
。然后我想你已经把它移到了模块级别,并把它变成了一个函数。然后我意识到我只是在猜测,于是停下来问路。(为了记录在案,我认为OP使用了p0
,这表明他或她对方法的第一个参数是如何工作的感到困惑。这就是为什么我在回答中将它改为self
——使它看起来更像是被理解的\u str\u
方法。)我承认我一点也没想过。我只是在解决OP访问x
和y
属性的问题。