from turtle import * # импорт модуля Черепашки
def pokraska(Kl, icol):
# раскраска списка точек Kl в цвет с номером icol
pass
def fA(pos) :
# определение для pos номера Кластера (файл A)
return 0
def fB(pos) :
# определение для pos номера Кластера (файл B)
return 0
def centroid(Kl):
# программа поиска центроида/антицентроида Кластера Kl
return Kl[0], 0 # возврат двух переменных - точки и значения для неёl
# ОСНОВНАЯ ПРОГРАММА
dk = {i:[] for i in range(5)} # создание словаря Кластеров (5 штук или более)
#fname = 'fz_27A_trV01.txt' # выбираем необходимое
fname = 'fz_27B_trV01.txt'
for s in open(fname): # чтение данных и разбиение на класстеры
s = s.replace(',','.') # замена запятой на точку
x,y = map(float,s.split()) # выделение координат
#i = fA((x,y)) # определяем номер Кластера (если файл A)
i = fB((x,y)) # определяем номер Кластера (если файл B)
dk[i].append((x,y)) # добавляем точку в выбранный Кластер
n, sx,sy = 0, 0 , 0 # инициализация ответов и числа Кластеров
for k in dk : # пробег по номерам Кластеров
if len(dk[k]) == 0 : continue # пропуск пустых
Kl = dk[k] # список точек Кластера
pokraska(Kl,k) # раскраска Кластера
ans, rans = centroid(Kl) # получение ответа для Кластера
n,sx,sy = n+1, sx + ans[0], sy +ans[1] # вычисление итогов
print(k, len(Kl), ans, rans) # печать характеристик
print((sx/n)*10000,(sy/n)*10000) # вывод результатов
Это шаблон программы, подходящий под любую формулировку.
Далее дописываем программу pokraska (делаем запуск)
Открыв файл в EXCEL дописываем программы fA/fB (делаем запуск для просмотра раскраски)
Дописываем программу centroid, для чего создаем подпрограммы dist и sumdist и делаем окончательный запуск