Не совсем корректно работает код

Сантьяго

Новичок
Пользователь
Ноя 19, 2024
6
1
3
Доброго времени суток

написал программку решение обратной геодезической задачи

Вопрос:
к примеру при вводе данных х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
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
972
219
43
20
Москва
Ну посмотри где у тебя деление на 0, там в ошибке должно быть указано
И, пожалуйста, вставь код как код
1647162378032-png.1702
 

Сантьяго

Новичок
Пользователь
Ноя 19, 2024
6
1
3
с ощибкой разобрался,
теперь понял как вставлять учту на будущие
 
  • Мне нравится
Реакции: Vershitel_sudeb

Форум IT Специалистов