点对象具有 x y 属性。编写一个函数,计算点 a 和点 b 之间的距离。测试将答案四舍五入到小数点后 6 位。| 代码大战
我解决了这个问题,但我的输入暗示 point = [x, y] 而不是 point(x, y):
解决方案本身是在坐标平面上进行的。使用坐标知识绘制一个矩形就足够了,其中 AB 线段是对角线,我们会发现如下:sqrt(so**2 + st**2)
其中 so 和 st 是矩形的边。我们使用勾股定理。
我的代码:
from math import *
def distance_between_points(a, b):
if a[0]>b[0]:
storona_one = a[0]-b[0]
else:
storona_one = b[0]-a[0]
if a[1]>b[1]:
storona_two = a[1]-b[1]
else:
storona_two = b[1]-a[1]
d = sqrt(storona_two**2+storona_one**2)
我无法理解的任务是将解决方案从数组格式更改为()格式
测试:
import codewars_test as test
from solution import distance_between_points
from preloaded import Point
@test.describe("Fixed Tests")
def fixed_tests():
@test.it('Basic Test Cases')
def basic_test_cases():
test.assert_equals(distance_between_points(Point(3, 3), Point(3, 3)), 0)
test.assert_equals(distance_between_points(Point(1, 6), Point(4, 2)), 5)
test.assert_equals(round(distance_between_points(Point(-10.2, 12.5), Point(0.3, 14.7)), 6), 10.728001)
示例中的输入不是
point = (x, y)
,而是Point(x, y)
完全不同的条目:第一个是创建元组,第二个是类的对象Point
。问题是在类中
Point
引用不是通过索引,而是通过对象变量:p = Point(1, 2); print(p.x, p.y)
但是,如果没有类代码,很难准确地说明如何从传递给函数的对象中正确获取
x
它y
。