Форум сайта python.su
Доброго времени суток
написал программку решение обратной геодезической задачи
Вопрос:
к примеру при вводе данных х1 = 50, у1 = 50, х2 = 50, у2 =100
происходит ошибка ZeroDivisionError: float division by zero
где в коде не правильно?
проверял на сайте https://geostart.ru/post/299 получаю значение Дирекционного угла.
и посоветуйте как сделать исключение если ввести в координаты все 0
вот мой код:
import math
print('Координаты пунктов')
while True:
x1 = float(input('введи х1: ‘))
y1 = float(input(’введи у1: ‘))
x2 = float(input(’введи х2: ‘))
y2 = float(input(’введи у2: ‘))
dx = x2 - x1
dy = y2 - y1
dist1 = math.hypot(dx, dy) # или так math. sqrt(dx ** 2 + dy ** 2)
print(’Расстояние: ‘, round(dist1, 3))
r = math.degrees(math.atan(abs(dy / dx))) # Находим Румб
dd = r
d = math.trunc(dd)
m = math.trunc((dd - d) * 60)
s = ((dd - d) * 60 - m) * 60
# print(’Румб: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\“’, sep='')
a = 0 # Дирекционный угол
if dx > 0 and dy > 0:
a = r
ne = r
print('СВ: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\”’, sep='' )
elif dx < 0 and dy > 0:
a = 180 - r
se = r
print('ЮВ: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\“’, sep='' )
elif dx < 0 and dy < 0:
a = 180 + r
sw = r
print('ЮЗ: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\”’, sep='' )
elif dx > 0 and dy < 0:
a = 360 - r
nw = r
print('СЗ: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\“’, sep='' )
elif dx == 0:
if dy > 0:
a = 90
elif dy < 0:
a = 270
elif dy == 0:
if dx > 0:
a = 0
elif dx < 0:
a = 180
da = (a)
dd = da
d = math.trunc(dd)
m = math.trunc((dd - d) * 60)
s = ((dd - d) * 60 - m) * 60
print('Дирекционный угол: ‘, d, ’°', m, ‘\’', round(s, 2), ‘\”’, sep='')
b = input('Хотите начать заново (y/n): ‘)
if b == ’y':
print('good')
else:
break
Офлайн
misha_miheevРазобраться будет проще, если сообщение об ошибке рассмотреть подробнее: в какой строке происходит ошибка?
происходит ошибка ZeroDivisionError: float division by zero
Офлайн
x1 = float(input('введи х1: ‘)) x2 = float(input(’введи х2: ‘)) dx = x2 - x1 r = math.degrees(math.atan(abs(dy / dx))) # Находим Румб
Офлайн
RodegastСпасибо, понял.
Офлайн
misha_miheevВидимо, у них алгоритм решения лучше адаптирован к вариантам с разными квадрантами и направлениями.
А подскажите почему на https://geostart.ru/post/299 (онлайн калькулятор решения ОГЗ) получаем решение?
misha_miheevИ какая ошибка и в какой строке? Опять “деление на ноль”? Ну так в этом фрагменте операций деления нет и такая ошибка возникать не может. Значит у вас либо возникает какая-то другая ошибка, либо где-то в другом месте. Я сегодня не угадоспособен. Вероятность того, что кто-то другой сумеет угадать где и какая ошибка возникает - немножко больше нуля, т.е. =о.
все равно ошибка
Офлайн