Почему моя Python программа возвращает «ValueError: ошибка математического домена»? - PullRequest
0 голосов
/ 10 марта 2020

Я делаю эту очень простую программу, которая вычисляет расстояние между координатами игрока и координатами другого места (для Minecraft).

import math
px = int(input("Your x-coordinate: "))
pz = int(input("Your z-coordinate: "))
x = int(input("X-coordinate of destination: "))
z = int(input("z-coordinate of destination: "))
dist = math.sqrt((px-x)^2+(pz-z)^2)
print("Distance is %d meters." % dist)

Когда я ввожу (0, 0) в качестве моего координаты и (1, 1) в качестве координат другого места, Python возвращает «ValueError: ошибка математической области» вместо ожидаемого значения root 2. Хотя, когда я ввожу (0, 0) в качестве обеих моих координат И координаты другого места, Python возвращает "0". Может кто-нибудь определить проблему для меня и возможное решение?

1 Ответ

2 голосов
/ 10 марта 2020

In

dist = math.sqrt((px-x)^2+(pz-z)^2)

Символ ^ используется для побитовой операции XOR . Для получения власти вы должны использовать math.pow() или **, то есть

dist = math.sqrt((px-x)**2+(pz-z)**2)

В качестве альтернативы вы также можете использовать math.hypot():

dist = math.hypot(px-x, pz-z)
...