二次距离
Quadratic Distance
我有一个任务有问题。我需要编写一个 python 代码来计算两点之间的二次距离。
公式为:
D^2 = (x1 - x2)^2 + (y1 - y2)^2
和我的代码:
def quadratic_distance(p1: Point, p2: Point) -> float:
# YOUR CODE HERE
class p1:
def __init__(self, x1, y1):
self.x = x1
self.y = y1
class p2:
def __init__(self, x2, y2):
self.x = x2
self.y = y2
result1 = p1.x - p2.x
result2 = result1**2
result3 = p1.y - p2.y
result4 = result3**2
result5 = result2 + result4
return result5
但我的问题是属性错误
AttributeError: type object 'p1' has no attribute 'x'
我是面向对象编程的新手,一直被困在这个任务上。我希望有人能帮助我
assert quadratic_distance(Point(0, 0),Point(1, 1)) == 1.75
应该是解决方案
根据你的公式,Point(0,0) 和 Point(1,1) 之间的二次距离是 2。不是 1.75
这是我的代码。试试这个
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
P1 = Point(0,0)
P2 = Point(1,1)
def quadratic_distance(p1: Point, p2: Point) -> float:
result1 = p1.x - p2.x
result2 = result1**2
result3 = p1.y - p2.y
result4 = result3**2
result5 = result2 + result4
return result5
print(quadratic_distance(P1, P2))
您收到错误消息,因为您尚未创建 class 的对象。在 python 中,x 不是 class 的属性,但 x 是其对象的属性。
所以你可以这样做:
class p1:
def __init__(self, x1, y1):
self.x = x1
self.y = y1
class p2:
def __init__(self, x2, y2):
self.x = x2
self.y = y2
p1_obj = p1(5,5)
p2_obj = p2(10,10)
result1 = p1_obj.x - p2_obj.x
result2 = result1**2
result3 = p1_obj.y - p2_obj.y
result4 = result3**2
result5 = result2 + result4
return results
您可以进一步改进它,因为 p1 和 p2 具有相同的属性(数据成员和成员函数),因此我们可以只使用一个 class 命名为 p(或任何其他名称)并创建两个对象 p1 和class
的 p2
虽然您已经声明了 class p1 和 p2 但您还没有创建任何对象。所以,你收到了这个错误。
x 和 y 是 class p1 和 p2 的实例,您无法通过它们的 class 名称访问它们。
要么将 x 和 y 定义为 class 中的 class 变量,要么为 class p1 和 p2 分别定义一个对象,如下所示。
p1ob=p1(4,5)
p2ob=p2(5,6)
我有一个任务有问题。我需要编写一个 python 代码来计算两点之间的二次距离。
公式为: D^2 = (x1 - x2)^2 + (y1 - y2)^2
和我的代码:
def quadratic_distance(p1: Point, p2: Point) -> float:
# YOUR CODE HERE
class p1:
def __init__(self, x1, y1):
self.x = x1
self.y = y1
class p2:
def __init__(self, x2, y2):
self.x = x2
self.y = y2
result1 = p1.x - p2.x
result2 = result1**2
result3 = p1.y - p2.y
result4 = result3**2
result5 = result2 + result4
return result5
但我的问题是属性错误
AttributeError: type object 'p1' has no attribute 'x'
我是面向对象编程的新手,一直被困在这个任务上。我希望有人能帮助我
assert quadratic_distance(Point(0, 0),Point(1, 1)) == 1.75
应该是解决方案
根据你的公式,Point(0,0) 和 Point(1,1) 之间的二次距离是 2。不是 1.75
这是我的代码。试试这个
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
P1 = Point(0,0)
P2 = Point(1,1)
def quadratic_distance(p1: Point, p2: Point) -> float:
result1 = p1.x - p2.x
result2 = result1**2
result3 = p1.y - p2.y
result4 = result3**2
result5 = result2 + result4
return result5
print(quadratic_distance(P1, P2))
您收到错误消息,因为您尚未创建 class 的对象。在 python 中,x 不是 class 的属性,但 x 是其对象的属性。
所以你可以这样做:
class p1:
def __init__(self, x1, y1):
self.x = x1
self.y = y1
class p2:
def __init__(self, x2, y2):
self.x = x2
self.y = y2
p1_obj = p1(5,5)
p2_obj = p2(10,10)
result1 = p1_obj.x - p2_obj.x
result2 = result1**2
result3 = p1_obj.y - p2_obj.y
result4 = result3**2
result5 = result2 + result4
return results
您可以进一步改进它,因为 p1 和 p2 具有相同的属性(数据成员和成员函数),因此我们可以只使用一个 class 命名为 p(或任何其他名称)并创建两个对象 p1 和class
的 p2虽然您已经声明了 class p1 和 p2 但您还没有创建任何对象。所以,你收到了这个错误。 x 和 y 是 class p1 和 p2 的实例,您无法通过它们的 class 名称访问它们。 要么将 x 和 y 定义为 class 中的 class 变量,要么为 class p1 和 p2 分别定义一个对象,如下所示。 p1ob=p1(4,5) p2ob=p2(5,6)