TypeError: unsupported operand type(s) for ** or pow(): 'tuple' and 'int'
я новичок в питоне, задали найти дистанцию между точками. Вот что у меня получилось:
from typing import Tuple
import math
def distance(pointA: Tuple[float, float], pointB: Tuple[float, float]) -> float:
return math.sqrt((pointA)**2 + (pointB)**2)
Далее вставляю значения:
distance((1, 1), (5, 4))
И программа выдает ошибку:
TypeError: unsupported operand type(s) for ** or pow(): 'tuple' and 'int'
Объясните пожалуйста, где ошибка
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
вероятнее всего надо так:
def distance(pointA: Tuple[float, float], pointB: Tuple[float, float]) -> float:
return math.sqrt((pointA[0] - PointB[0])**2 + (PointA[1] -pointB[1])**2)
Автор решения: Zhihar
→ Ссылка
вообще-то формула для расстояния:
d^2 = dx^2 + dy^2
а ваша формула
math.sqrt((pointA)**2 + (pointB)**2)
что считать должна?
ну и конечно вы пытаетесь выполнить (pointA)**2, т.е. повести в квадрат совокупность из двух чисел - это как? что это должно значить?
правильнее было бы
dx = pointA[0] - pointB[0]
dy = pointA[1] - pointB[1]
d = (dx**2 + dy**2)**0.5
P.S.
для многомерного евклидово пространства функция должна быть такой:
def distance(pointA, pointB) -> float:
return sum((point[0] - point[1])**2 for point in zip(pointA, pointB))**0.5