Задача.
Записати в файл відстані між точками.
В одному файлі в кожному рядку записані координати пар точок. Кожна координата відокремлена від іншої прогалиною. Наприклад, рядок виду 3 6 -2 4 означає, що координати першої точки (3; 6), другий - (-2; 4). У другій файл потрібно записати порядково відстань між парами точок з першого файлу.
Розв'язання
Відстань між точками на координатній площині можна знайти, використовуючи теорему Піфагора по відношенню до трикутника, де один катет - це різниця між координатами x, другий катет - різниця між координатами y, гіпотенуза - шукане відстань.
У коді нижче використовується генератор списку:
[int (i) for i in mas]
"Перевести" це можна в такий спосіб. Створити новий список з елементів списку i, перетворених в ціле число.
Алгоритм рішення задачі:
Імпортувати функцію sqrt (витяг квадратного кореня) з бібліотеки math.
Відкрити файл з координатами на читання. Присвоїти покажчик на нього змінної coords.
Відкрити файл dists.txt на запис. У нього будуть записуватися отримані відстані.
Для кожного рядка файлу, пов'язаного з coords надають такі переваги:
Перетворити рядок до списку, розділивши по пропуску. Вийде список рядків.
У списку кожен рядок перетворити в ціле число.
Знайти відстань між точками. x1 записаний в mas [0] списку, y1 - в mas [1], x2 - в mas [2], y2 - в mas [3]. Відстань знаходиться як sqrt ((x1-x2)**2 + (y1-y2)**2).
Записати отримане відстань в файл dists.txt, перетворивши його в рядкове представлення і додавши символ переходу на новий рядок.
Закрити обидва файли.
Код програми
from math import sqrt
coords = open('coords.txt','r')
dists = open('dists.txt','w')
for mas in coords:
mas = mas.split()
mas = [int(i) for i in mas]
d = sqrt((mas[0]-mas[2])**2 + (mas[1]-mas[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