Далее нам необходимо написать функцию для поиска центра кластера. Но прежде чем перейти к ней, реализуем вспомогательную функцию для вычисления расстояния между двумя точками.
Расстояние между двумя точками на плоскости между точками A(x1, y1) и B(x2, y2) вычисляется по формуле: d(A,B)= ((x2 - x1)**2 + (y2 - y1)**2)**0.5
Что можно описать функцией:
def d(A, B):
x1, y1 = A
x2, y2 = B
return ((x2 - x1)**2 + (y2 - y1)**2)**0.5
print(d([0, 0], [3, 4])) # 5.0
Но так же надо заметить, что эта функция уже описана в питоне, а именно в библиотеке math.
Тот же самый код, но короче через math:
from math import dist
print(dist([0, 0], [3, 4]))
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤🔥8❤6🔥3
Теперь разберём функцию для поиска центра кластера. Для примера возьмём кластер:
[[0, 0], [4, 3], [2, 2], [5, 6]]
Напомню, что центром кластера называется точка, для которой сумма расстояний до всех остальных точек кластера минимальна.
Алгоритм следующий:
- Берём произвольную точку p из кластера.
- Вычисляем сумму расстояний от p до всех других точек g этого кластера.
- Повторяем для всех точек и выбираем ту, у которой сумма минимальна.
from math import dist
def center(cl):
R = []
for p in cl:
summa = 0
for g in cl:
summa += dist(p, g)
R.append([summa,p])
return min(R)[1]
clustersA = [[[0, 0], [4, 3], [2, 2], [5, 6]], []]
cl = clustersA[0]
print(center(cl)) # [2, 2] - центр первого кластера из двух
Суммы для всех точек:
15.638676800652844 [0, 0]
10.39834563766817 [4, 3]
10.06449510224598 [2, 2]
15.972527336075034 [5, 6]
from math import dist Импорт функции для вычисления евклидова расстояния между точками.
def center(cl): Функция, которая находит "центр" кластера (точку с минимальной суммой расстояний до остальных).
R = [] Список для сохранения результатов.
for p in cl:Первый цикл – перебирает каждую точку кластера.
summa = 0 Обнуление суммы расстояний для текущей точки p.
for g in cl:Вложенный цикл – вычисляет расстояние от p до всех точек g в кластере.
summa += dist(p, g) Накопление суммы расстояний для каждой точки p
R.append([summa, p]) Cохранение суммы и точки p в список R.
return min(R)[1] Поиск точки с минимальной суммой расстояний (центр).
clustersA = [[[0, 0], [4, 3], [2, 2], [5, 6]], []]Тестовые данные: список из двух кластеров (второй пуст).
cl = clustersA[0] Выбор первого кластера для обработки.
print(center(cl)) Вывод результата работы функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7❤6👍2
Кульминация решения (опять же на примере кластеров из файла B) - поиск центров кластеров и вычисление среднего арифметическое абсцисс центров кластеров файла B и среднего арифметическое ординат центров кластеров файла B.
centersB = [center(cl) for cl in clustersB]
pxB = sum(x for x, y in centersB) / 3 * 10000
pyB = sum(y for x, y in centersB) / 3 * 10000
print(int(pxB), int(pyB))
centersB = [center(cl) for cl in clustersB]Находим центры каждого кластера из списка clustersB
pxB = sum(x for x, y in centersB) / 3 * 10000Вычисляем среднюю x-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)
pyB = sum(y for x, y in centersB) / 3 * 10000Вычисляем среднюю y-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)
print(int(pxB), int(pyB))Выводим результат в виде целых чисел
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8❤🔥4👍3
17 заданий - 70 баллов
21 задание - 80 баллов
25 заданий - 90 баллов
Последние два номера дают по 2 первичных балла (за каждый ответ), суммарно за них можно получить 10 вторичных.
Забавный пример программки для перевода:
while True:
s = int(input('Сколько первичных баллов ты планируешь набрать? \n'))
if 1 <= s <= 29:
tab = [7, 14, 20, 27, 34, 40, 43, 46, 48, 51,
54, 56, 59, 62, 64, 67, 70, 72, 75, 78,
80, 83, 85, 88, 90, 93, 95, 98, 100]
print(f'Ты получишь: {tab[s - 1]} баллов! \n')
else:
print('Выход из программы.')
exit()
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤3❤🔥3
🟡 1 бит🟡 1 байт = 8 бит🟡 1 Кбайт = 2¹⁰ байт = 1024 байт🟡 1 Мбайт = 2¹⁰ Кбайт = 1024 Кбайт🟡 1 Гбайт = 2¹⁰ Мбайт = 1024 Мбайт🟡 1 Тбайт = 2¹⁰ Гбайт = 1024 Гбайт🟡 1 Пбайт = 2¹⁰ Тбайт = 1024 Тбайт
Смотрите и запоминайте, если в будущем не хотите получать глупых ошибок в 7 и 11 номерах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8👍7❤2
else после for или while в Python? #useful Блок else выполняется только если цикл завершился без использования break.
🔹 Почему это удобно?:
Например, при поиске элемента в списке:
- Если элемент найден — срабатывает break, и блок else пропускается.
- Если элемент не найден — цикл завершится нормально, и else выполнится, позволяя обработать ситуацию.
# Поиск элемента в списке
numbers = [1, 3, 5, 7, 9]
target = 4
for num in numbers:
if num == target:
print("Элемент найден:", target)
break
else:
print("Элемент не найден:", target)
- Если target есть в списке, мы его найдём и выйдем из цикла через break.
- Если target отсутствует, цикл завершится нормально, и сработает блок else, сообщая, что элемент не найден.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥27🔥10❤4
def create_counter():
count = 0 # Внутреннее состояние
def counter():
nonlocal count
count += 1
print("Текущий счет:", count)
return counter
my_counter = create_counter()
my_counter() # Текущий счет: 1
my_counter() # Текущий счет: 2
Каждый вызов my_counter() увеличивает внутренний счетчик, который "запомнен" внутри функции. Это и есть замыкание!
- Хранить состояние между вызовами
- Создавать "приватные" переменные
- Сделать код более модульным и безопасным
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤🔥4❤3🔥1
pip install и что происходит, когда вы вводите эту команду 0⃣ Ищет пакет - первым делом он обращается к Python Package Index (PyPI) или другим источникам, которые вы указали.
1⃣ Загружает нужную версию - выбирает подходящий релиз и скачивает его на ваш компьютер.
2⃣ Устанавливает зависимости - если пакет зависит от других библиотек, то pip автоматически их тоже скачает и установит.
3⃣ Распаковывает и устанавливает - файл распаковывается, а код - либо C-расширения - компилируются, либо Python-модуль сразу попадает в ваше окружение (обычно в site-packages).
Все установленные пакеты регистрируются в метаданных - так
pip знает, что у вас есть, и может управлять зависимостями, обновлять или удалять их. Можно указать свой собственный репозиторий или даже установить пакет прямо из Git, архива или локальной папки — для этого есть специальные параметры, такие как --index-url.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍2🔥1
С собой ничего особенного приносить не нужно - КИМов нет.
Единственное, что будет полезно -- черновик, который заранее распечатают для тебя.
Совет: выписывай все ответы на черновик, чтобы при сбое техники не терять время на повторное решение.
В аудитории будет ноутбук или ПК с клавиатурой и мышкой.
Выбрать устройство нельзя - бери, что есть.
Офисные пакеты: LibreOffice или Microsoft Office
Среды программирования: Pascal, Python (IDLE или PyCharm), C++ (Visual Studio или CodeBlocks), C#, Java
Среды исполнителей: Кумир (не во всех аудиториях)
Редакторы: текстовый и графический
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1 1
По свежей статистике - больше половины пользователей в СНГ уже так или иначе используют нейросети: кто-то делает с их помощью учёбу, кто-то генерит мемы и ничего больше..
Сервисы которые возьмут на себя рутину учёбы и работы: от домашних заданий, рефератов и презентаций до отчётов, конспектов и даже дипломных проектов
🔠 Claude — создание текстов и ответов, анализ информации;🔠 Perplexity AI — поиск и суммаризация информации, ответы;🔠 Gamma / Tome — генерация презентаций и отчетов;🔠 MindMap AI — создание интеллектуальных карт и идей;🔠 PDF.ai — анализ PDF, извлечение информации, ответы;🔠 ChatPDF — чат с PDF-документами, понимание текста;🔠 QuillBot — перефразирование текстов, упрощение предложений;🔠 Grammarly — проверка орфографии, грамматики, стиля;🔠 LanguageTool — многоязычная проверка орфографии;🔠 WordyBot — генерация учебных и академических текстов с ссылками;🔠 Notion AI — организация заметок, автоматизация текста;🔠 StudyflowAI — помощь с домашкой, разбор вопросов, структурирование;🔠 Explainpaper — объяснение сложных научных статей;🔠 Study24.ai — создание шпаргалок и конспектов;🔠 TutorAI / TuranAI — виртуальный репетитор, подготовка;🔠 School Assistant AI — генерация учебных материалов;🔠 Wisdolia — создание карточек для запоминания;🔠 Slides AI — автоматическая генерация презентаций;🔠 Canva Magic Studio — визуальный контент, презентации и дизайн;🔠 Scribbr — проверка уникальности и плагиата;🔠 ReText — генерация академических текстов;🔠 RoboGPT — генерация дипломных и курсовых работ;🔠 Chad AI — генерация учебных материалов, эссе;🔠 CopyMonkey — генерация текстов и отчетов;🔠 NeuroTexter — создание академических текстов;🔠 Davinchi — бесплатная генерация дипломных работ;🔠 GigaChat – формирует структурированные научные тексты;🔠 AiWriteArt – генерация и редактирование текстов;🔠 Zaochnik GPT – создание дипломов и отчетов;🔠 StudyAI — помощь с домашними заданиями;🔠 EssayBot — автоматическая генерация эссе на английском;🔠 NeuralText — генерация текстов, идей и контента для учебы и проектов;🔠 texthandler — быстрое форматирование текста;🔠 Nana Banana — продвинутый генератор и редактор изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6👍2🔥1