Основы геометрии | Python
Point объекты имеют атрибуты x y. Напишите функцию, вычисляющую расстояние между Point a и Point b. Тесты округляют ответы до 6 знаков после запятой. | CodeWars
Данную задачу я решил, но мой ввод подразумевает 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)
Ответы (1 шт):
Ввод в примере не point = (x, y), а Point(x, y) что совершенно разные записи: в первой создается кортеж, а во второй объект класса Point.
Вот проблема в том, что в классе Point обращение происходит не по индексу, а по переменной объекта:
p = Point(1, 2); print(p.x, p.y)
Однако без кода класса трудно точно сказать как правильно получить x и y из переданного в функцию объекта.
