Записать в файл расстояние между точками (Python)

Тема: 
Файлы

В одном файле в каждой строке записаны координаты пар точек. Каждая координата отделена от другой пробелом. Например, строка вида 3 6 -2 4 означает, что координаты первой точки (3;6), второй - (-2;4). Во второй файл требуется построчно записать расстояние между парами точек из первого файла.

Расстояние между точками на координатной плоскости можно найти, используя теорему Пифагора по отношению к треугольнику, где один катет - это разность между координатами x, второй катет - разность между координатами y, гипотенуза - искомое расстояние.

В коде ниже используется генератор списка:
[int(j) for j in i]
"Перевести" это можно следующим образом. Создать новый список из элементов списка i, преобразованных в целое число.

Алгоритм решения задачи:

  1. Импортировать функцию sqrt (извлечение квадратного корня) из библиотеки math.
  2. Открыть файл с координатами на чтение. Присвоить указатель на него переменной coords.
  3. Открыть файл dists.txt на запись. В него будут записываться полученные расстояния.
  4. Для каждой строки файла, связанного с coords, выполнять следующие действия:
    1. Преобразовать строку в список, разделив по пробелу. Получится список строк.
    2. В списке каждую строку преобразовать в целое число.
    3. Найти расстояние между точками. x1 записан в i[0] списка, y1 - в i[1], x2 - в i[2], y2 - в i[3]. Расстояние находится как sqrt((x1-x2)2 + (y1-y2)2).
    4. Записать полученное расстояние в файл dists.txt, преобразовав его в строчное представление и добавив символ перехода на новую строку.
  5. Закрыть оба файла.

from math import sqrt
coords = open('coords.txt','r')
dists = open('dists.txt','w')
for i in coords:
    i = i.split()
    i = [int(j) for j in i]
    d = sqrt((i[0]-i[2])**2 + (i[1]-i[3])**2)
    dists.write(str(d)+'\n')
coords.close()
dists.close()

Пример вводы и вывода. Файл coords.txt:

4 5 -1 2
1 -6 -4 0
0 0 3 4

Файл dists.txt:

5.830951894845301
7.810249675906654
5.0

фнкия hypot

в библиотеке math есть замечательная функция hypot. Используя её можно написать
d = hypot(x1 - x2, y1 - y2)
Она ещё и диапазон аргументов более широкий имеет.
Жалко только, что её на более чем 2 параметра не сделали

ачем грузить мат, если можно через комплекс?

a,b = i[0:2],i[2:]
d = abs(complex(a)-complex(b))

а скрт можно и через **0.5 реализовать

Вопрос

Ошибка:

Traceback (most recent call last):
  File "C:\Users\roman\PycharmProjects\python_lessons\younglinux\rasstoyanie\rasstoyanie.py", line 9, in <module>
    d = sqrt((i[0]-i[2])**2 + (i[1]-i[3]**2))
ValueError: math domain error

Скобки не правильно

Скобки не правильно расставлены. В конце одна скобка. После i[3] должна быть скобка ).

Скобка

Спасибо за урок. Не буду спешить в следующий раз, нашел ошибку через 15 минут после отправки комментария. Корень из отрицательного ...