Информатика ЕГЭ | Илья Андрианов | itpy 🧑‍💻
1.12K subscribers
270 photos
22 videos
19 files
651 links
По рекламе: @ilandroxxy

Шпаргалки: clck.ru/3FwqWt
📚 Наши курсы: clck.ru/3FwqYb

Разборы: clck.ru/3Fwqay
💬 Чатик: clck.ru/3FwqZa

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
⤵️ Продолжение шпаргалки по #ЕГЭ27 #useful

Далее нам необходимо написать функцию для поиска центра кластера. Но прежде чем перейти к ней, реализуем вспомогательную функцию для вычисления расстояния между двумя точками.

Расстояние между двумя точками на плоскости между точками 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]))



#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤‍🔥86🔥3
Продолжение шпаргалки по #ЕГЭ27 #useful

Теперь разберём функцию для поиска центра кластера. Для примера возьмём кластер:
[[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]



👩‍💻 Комментарии к коду:

1⃣ from math import dist
Импорт функции для вычисления евклидова расстояния между точками.


2⃣ def center(cl):
Функция, которая находит "центр" кластера (точку с минимальной суммой расстояний до остальных).


3⃣ R = []
Список для сохранения результатов.


4⃣ for p in cl:
Первый цикл – перебирает каждую точку кластера.


5⃣ summa = 0
Обнуление суммы расстояний для текущей точки p.


6⃣ for g in cl:
Вложенный цикл – вычисляет расстояние от p до всех точек g в кластере.


7⃣ summa += dist(p, g)
Накопление суммы расстояний для каждой точки p


8⃣ R.append([summa, p])
Cохранение суммы и точки p в список R.


0⃣ return min(R)[1]
Поиск точки с минимальной суммой расстояний (центр).


1⃣1⃣ clustersA = [[[0, 0], [4, 3], [2, 2], [5, 6]], []]
Тестовые данные: список из двух кластеров (второй пуст).


1⃣2⃣ cl = clustersA[0]
Выбор первого кластера для обработки.


1⃣3⃣ print(center(cl))
Вывод результата работы функции.


#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥76👍2
Продолжение шпаргалки по #ЕГЭ27 #useful

Кульминация решения (опять же на примере кластеров из файла 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))



👩‍💻 Комментарии к коду:

1⃣ centersB = [center(cl) for cl in clustersB]
Находим центры каждого кластера из списка clustersB


2⃣ pxB = sum(x for x, y in centersB) / 3 * 10000
Вычисляем среднюю x-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)


3⃣ pyB = sum(y for x, y in centersB) / 3 * 10000
Вычисляем среднюю y-координату центров кластеров, умножаем на 10000 и делим на 3 (масштабирование)


4⃣ print(int(pxB), int(pyB))
Выводим результат в виде целых чисел


#⃣ Полный список разборов в одном месте
#⃣ Шпаргалки по всем остальным номерам ЕГЭ

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤‍🔥4👍3
💡Шкала перевода баллов ЕГЭ по информатике 2024 #useful

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()


#⃣ Вся теория для ЕГЭ в одном месте
#⃣ Полный список разборов в одном месте

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93❤‍🔥3
🚩 Сегодня запоминаем единицы измерения объемов информации #useful
🟡 1 бит
🟡 1 байт = 8 бит
🟡 1 Кбайт = 2¹⁰ байт = 1024 байт
🟡 1 Мбайт = 2¹⁰ Кбайт = 1024 Кбайт
🟡 1 Гбайт = 2¹⁰ Мбайт = 1024 Мбайт
🟡 1 Тбайт = 2¹⁰ Гбайт = 1024 Гбайт
🟡 1 Пбайт = 2¹⁰ Тбайт = 1024 Тбайт


Смотрите и запоминайте, если в будущем не хотите получать глупых ошибок в 7 и 11 номерах.

#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8👍72
🚀 Можно ли использовать 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, сообщая, что элемент не найден.


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥27🔥104
📱 Что такое замыкание в Python? #useful

🧠 Объявление: функция внутри функции, которая запоминает переменные из внешней области


Пример: создание счетчика
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() увеличивает внутренний счетчик, который "запомнен" внутри функции. Это и есть замыкание!


🔍 Зачем это нужно?
- Хранить состояние между вызовами
- Создавать "приватные" переменные
- Сделать код более модульным и безопасным


#⃣ Вся теория для ЕГЭ в одном месте
Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥33🔥1