Информатика | Илья Андрианов | itpy 🧑‍💻
1.04K subscribers
263 photos
20 videos
19 files
629 links
По рекламе: @ilandroxxy

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

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

📺 YouTube: clck.ru/3FwqbX

🙋‍♂️ Я автор: @ilandroxxy
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 7696 #reshu по информатике #ЕГЭ13

🚩 Условие задачи:
Для узла с IP-адресом 224.128.112.142 адрес сети равен 224.128.96.0.
Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.


🚩 Теоретическая справка:
Маска сети имеет длину 32 бита и вид 1111..000 (сначала единицы, потом нули). Поэтому мы можем перебрать ее значения через for mask in range(32+1):


👩‍💻 Код решения:
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'224.128.112.142/{mask}', 0)
if str(net) == f'224.128.96.0/{mask}':
print(str(net.netmask).split('.')[2])


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

1⃣ from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.


2⃣ Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).


3⃣ net = ip_network(f'224.128.112.142/{mask}', 0)
Создание объекта сети net с заданным IP-адресом и переменной маской подсети, где последний аргумент указывает на коррекцию префикса.


4⃣ if str(net) == f'224.128.96.0/{mask}':
Условие проверки соответствия адреса сети определенному значению.


5⃣print(str(net.netmask).split('.')[2])
Вывод третьего октета маски подсети из объекта сети net, если условие выполнено.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
7643
Подсчитал примерно 5-6 основных типов для 13 номера. После постов нужно ли сделать общую Шпаргалку?
Anonymous Poll
100%
Точно надо
0%
Скорее нет
113
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 10783 #kege по информатике #ЕГЭ13

🚩 Условие задачи:
Два узла, находящиеся в одной сети, имеют IP-адреса 121.171.5.70 и 121.171.5.107.
Укажите наименьшее возможное количество адресов в этой сети.


👩‍💻 Код решения:
from ipaddress import *
R = []
for mask in range(32+1):
net1 = ip_network(f'121.171.5.70/{mask}', 0)
net2 = ip_network(f'121.171.5.107/{mask}', 0)
if net1 == net2:
R.append(net1.num_addresses)
print(min(R))

Ответ: 64

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

1⃣ from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.


2⃣ R = []
Создание пустого списка R, куда будут добавляться результаты.


3⃣ Цикл for mask in range(32+1):
Для перебора возможных значений маски сети от 0 до 32 (включительно).

4⃣ net1 = ip_network(f'121.171.5.70/{mask}', 0)
Создание объекта сети net1 с заданным IP-адресом и переменной маской подсети, с коррекцией префикса.

5⃣ net2 = ip_network(f'121.171.5.107/{mask}', 0)
Создание объекта сети net2 с другим IP-адресом, но той же маской подсети.

6⃣ if net1 == net2:
Условие проверки, совпадают ли сети net1 и net2.

7⃣ R.append(net1.num_addresses)
Добавление количества адресов в сети net1 в список R.


8⃣ print(min(R))
Вывод минимального значения количества адресов среди всех сетей, для которых условие совпадения сетей выполнилось.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1087
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 12947 #kege по информатике #ЕГЭ13
Автор задачи: (C. Горбачёв)

🚩 Условие задачи:
Сеть задана IP-адресом 203.111.195.0 и маской сети 255.255.240.0. Сколько в этой сети IP-адресов, в двоичной записи которых количество нулей кратно трём, а также содержатся три подряд идущие единицы и три подряд идущих нуля одновременно?
В ответе укажите только число.


🚩 Теоретическая справка:
После того, как мы определили адрес сети с помощью функции ip_network, мы можем перебрать все IP-адреса в этой сети с помощью обычного цикла for ip in net.


👩‍💻 Код решения:
from ipaddress import *
net = ip_network('203.111.195.0/255.255.240.0', 0)
cnt = 0
for ip in net:
s = f'{ip:b}'
if s.count('0') % 3 == 0:
if '111' in s and '000' in s:
cnt += 1
print(cnt)

# Ответ: 1043


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

1⃣ from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с сетевыми адресами.


2⃣ net = ip_network('203.111.195.0/255.255.240.0', 0)
Создание объекта сети net с заданным IP-адресом и маской подсети, с коррекцией префикса.


3⃣ cnt = 0
Инициализация счетчика cnt для подсчета количества IP-адресов, удовлетворяющих условиям.


4⃣ Цикл for ip in net:
Для перебора всех IP-адресов в сети net.


5⃣ s = f'{ip:b}'
Перевод IP-адреса в бинарное представление и сохранение в строковую переменную s.


6⃣ if s.count('0') % 3 == 0:
Проверка условия: количество нулей в бинарном представлении делится на 3 без остатка.


7⃣ if '111' in s and '000' in s:
Дополнительная проверка наличия подстрок '111' и '000' в бинарном представлении.


8⃣ cnt += 1
Увеличение счетчика, если IP-адрес удовлетворяет обоим условиям.


0⃣ print(cnt)
Вывод общего количества IP-адресов, которые соответствуют условиям.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1085
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 11835 #kege по информатике #ЕГЭ13
Автор задачи:
(Л. Шастин)

🚩 Условие задачи:
Сеть, в которой содержится узел с IP-адресом 207.0.A.167, задана маской сети 255.255.255.192, где A - некоторое допустимое для записи IP-адреса число. Определите количество значений A, для которых для всех IP-адресов этой сети в двоичной записи IP-адреса суммарное количество нулей в левых двух байтах больше суммарного количества нулей в правых двух байтах.
В ответе укажите только число.


🚩 Теоретическая справка:
По условию задачи требуется перебрать значения допустимого для формирования IP-адреса числа A. Поскольку на каждое число A отводится 1 байт (8 бит), допустимые числа находятся в диапазоне от 0 до 255 (в двоичной системе счисления - от 00000000 до 11111111).


👩‍💻 Код решения:
from ipaddress import *
cnt = 0
for A in range(0, 255+1):
net = ip_network(f'207.0.{A}.167/255.255.255.192', 0)
if all(f'{ip:b}'[:16].count('0') > f'{ip:b}'[16:].count('0') for ip in net):
cnt += 1
print(cnt)

# Ответ: 37


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

1⃣ from ipaddress import *
Импорт всех функций из модуля ipaddress для работы с IP-адресами и сетями.


2⃣ cnt = 0
Инициализация переменной cnt для подсчета количества IP-адресов, удовлетворяющих условиям.


3⃣ for A in range(0, 255+1):
Цикл для перебора значения A от 0 до 255 включительно.


4⃣ net = ip_network(f'207.0.{A}.167/255.255.255.192', 0)
Создание объекта сети net с динамически формируемым IP-адресом, маской подсети и коррекцией префикса.


5⃣ if all(f'{ip:b}'[:16].count('0') > f'{ip:b}'[16:].count('0') for ip in net):
Проверка условия: количество нулей в первой половине бинарного представления IP-адреса больше чем во второй половине для всех IP-адресов в сети.


6⃣ cnt += 1
Увеличиваем счетчик, если IP-адрес удовлетворяет условию.


7⃣ print(cnt)
Вывод количества IP-адресов в созданных сетях, соответствующих условиям.


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
965
This media is not supported in your browser
VIEW IN TELEGRAM
1⃣3⃣ Шпаргалка ЕГЭ | Задание #ЕГЭ13 #шпора

Подготовили для вас методическое пособие по решению 13 номера! Сохраняйте все, что нужно знать о задании 😼

В комментариях к этому посту закреплю файл в формате pdf 👇

Ссылка на шпаргалку/методичку на Notion и несколько полезных функций уже здесь:

🚩 Подключаем библиотеку:
from ipaddress import *


🚩 Функция для создания объекта сети IP:
net = ip_network('адрес сети/маска')


🚩 Получение маски сети:
net.netmask


🚩 Получение количество адресов:
net.num_addresses


🚩 Получение адреса сети:
net.network_address


🚩 Цикл для перебора значений маски:
for mask in range(33):
net = ip_network(f'адрес узла/{mask}', 0)


🚩 Цикл для перебора IP-адресов в сети:
for ip in net:


🚩 Представление ip-адреса в двоичном виде:
ip_b = f'{ip:b}'


Информатика ЕГЭ | itpy 🧑‍💻
Поддержать автора: boosty 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
107643
Ребят, сел делать разборы на канал.
Какой номер разбираем следующим?
Anonymous Poll
32%
5️⃣
24%
8️⃣
45%
1️⃣4️⃣
🖥 🔤🔤🔤 🔤🔤🔤🔤🔤

Здесь я и другие авторы готовы ответить на все ваши вопросы, касающиеся подготовки к ЕГЭ. Будем рады видеть вас в нашем сообществе!

Поддержать автора донатом 💵
Please open Telegram to view this post
VIEW IN TELEGRAM
776
This media is not supported in your browser
VIEW IN TELEGRAM
💡Списки, и как они устроены #tpy

Списки - один из наиболее распространенных типов данных в Python. Они представляют собой упорядоченные коллекции объектов, которые могут быть любого типа.

Списки в Python создаются с использованием квадратных скобок []. Вот пример создания списка с различными типами данных:
my_list = [1, 2, "Python", 3.14, True]
print(my_list)
# Выведет: [1, 2, 'Python', 3.14, True]


Элементы списка нумеруются с нуля. Чтобы получить доступ к элементу списка, указывается его индекс в квадратных скобках:
print(my_list[2])  # Обращаемся к элементу с индексом 2
# Выведет: Python


Можно изменить значение элемента списка, просто присвоив новое значение элементу по индексу:
my_list[1] = 10
print(my_list)
# Выведет: [1, 10, 'Python', 3.14, True]


Списки поддерживают различные операции, такие как добавление элемента в конец списка (append), удаление элемента по значению (remove), удаление элемента по индексу (del), слияние списков (extend), и многие другие.

🚩 Более подробную информацию про работу с списками вы можете изучить в нашей статье на Notion

Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
96532
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Итерация по списку в Python с помощью метода Enumerate #tpy #useful

Если у вас нет полного понимания того, как работает функция enumerate в Python, то давайте разберемся вместе. Метод enumerate() добавляет счетчик к элементам итерируемого объекта и возвращает объект типа enumerate. Этот объект содержит пары значений: индекс элемента и сам элемент из исходного списка.

Одним из главных преимуществ использования метода enumerate является возможность преобразования объектов типа enumerate в список или кортеж с помощью методов list() и tuple() соответственно. Это облегчает работу с индексами элементов списка и упрощает процесс перебора элементов в цикле.

Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
844👍33
Что вы думаете о крайнем посте про enumerate? Хотели бы вы видеть еще подобные Python посты?
Anonymous Poll
84%
Почему бы и да 🙃
16%
Можно летом, сейчас актуальнее разборы задач 🤔
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 39243 #reshu по информатике #ЕГЭ14
Уровень: Базовый

🚩 Условие задачи:
Значение выражения 4**34 + 5 * 4**22 + 4**13 + 2 * 4**9 + 82 записали в системе счисления с основанием 16. Сколько разных цифр встречается в этой записи?


🚩 Теоретическая справка:
Функция hex() является встроенной функцией в Python, которая используется для преобразования целого числа в строку, содержащую его шестнадцатеричное представление.


👩‍💻 Код решения 1:
print(len(set(hex(4**34 + 5*4**22 + 4**13 + 2*4**9 + 82)[2:])))


👩‍💻 Код решения 2:
x = 4**34 + 5*4**22 + 4**13 + 2*4**9 + 82
s = []
while x > 0:
s.append(x % 16)
x //= 16
print(len(set(s)))

# Ответ: 6


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

1⃣ x = 4**34 + 5*4**22 + 4**13 + 2*4**9 + 82
В этой строке расчитывается значение переменной x с помощью сложных математических операций.


2⃣ s = []
Создается пустой список s, который будет использоваться для хранения результатов вычислений.


3⃣ while x > 0:
Запускается цикл while, который будет выполняться до тех пор, пока переменная x больше нуля.


4⃣ s.append(x % 16)
Добавляется остаток от деления переменной x на 16 в список s. Это делается для перевода числа в шестнадцатеричную систему счисления.

5⃣ x //= 16
Значение переменной x делится на 16 с использованием целочисленного деления, чтобы продолжить процесс перевода числа в шестнадцатеричную систему.


6⃣ print(len(set(s)))
Выводится длина множества уникальных значений списка s, что позволяет определить количество различных цифр, используемых в представлении числа x в шестнадцатеричной системе.


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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
854
Media is too big
VIEW IN TELEGRAM
🚩 Создание стикеров прямо в Телеграм #useful

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

Информатика ЕГЭ | itpy👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1177
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 48385 #reshu по информатике #14
Уровень: Базовый

🚩 Условие задачи:
Операнды арифметического выражения записаны в системах счисления с основаниями 13 и 18:

8x78y_13 + 79xy7_18

Определите значения x и y, при которых значение данного выражения будет наименьшим и кратно 9. Для найденных значений x и y вычислите частное от деления.


🚩 Теоретическая справка:
Строчку alphbet можно записать иначе:
from string import *
alphabet = digits + ascii_uppercase


👩‍💻 Код решения:
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
R = []
for x in alphabet[:13]:
for y in alphabet[:13]:
A = int(f'8{x}78{y}', 13)
B = int(f'79{x}{y}7', 18)
if (A + B) % 9 == 0:
R.append((A + B) // 9)
print(min(R))

# Ответ: 113024


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

1⃣ alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создается отсортированный список alphabet, содержащий цифры от 0 до 9 и буквы английского алфавита в верхнем регистре.


2⃣ R = []
Создается пустой список R, в который будут добавляться результаты, удовлетворяющие условию задачи.


3⃣ for x in alphabet[:13]:
Запускается цикл for, перебирающий элементы alphabet до 13-го (не включительно) и присваивающий их переменной x.


4⃣ for y in alphabet[:13]:
Запускается вложенный цикл for, перебирающий элементы alphabet до 13-го (не включительно) и присваивающий их переменной y.


5⃣ A = int(f'8{x}78{y}', 13)
Формируется число A, которое получается из конкатенации строк, представляющих числа в строке, и преобразуется в десятичное число по основанию 13.


6⃣ B = int(f'79{x}{y}7', 18)
Формируется число B, которое получается аналогично число A, но преобразуется в десятичное число по основанию 18.


7⃣ if (A + B) % 9 == 0:
Проверяется условие, что сумма чисел A и B делится на 9 без остатка.


8⃣ R.append((A + B) // 9)
Если условие выполняется, результат деления суммы A и B на 9 добавляется в список R.


0⃣ print(min(R))
Выводится минимальное значение из списка R, которое является ответом на задачу.


Информатика ЕГЭ | itpy 👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
9665
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Определение Времени Выполнения программы в Python #useful #tpy

Вычисление времени выполнения кода является важной задачей в программировании. Для этого можно использовать модуль time в Python, который позволяет измерять точное время выполнения программы.

В приведенном коде функция my_function намеренно оставлена без реальной задачи для удобства демонстрации. Мы начинаем измерение времени выполнения с помощью time.time() до выполнения программы и сразу после ее окончания. После чего мы вычисляем разницу между этими значениями, чтобы определить общее время выполнения программы.

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

Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
8654
This media is not supported in your browser
VIEW IN TELEGRAM
🚩🚩 Разбор номера 13246 #kege по информатике #ЕГЭ14
Автор задачи: (М. Попков)
Уровень: Средний

🚩 Условие задачи:
В системе счисления с основанием p выполняется равенство 24x9_p + yxy3_p = x4y0_p. Буквами x и y обозначены некоторые цифры из алфавита системы счисления с основанием p. Определите значение числа xyy_p и запишите это значение в десятичной системе счисления.


🚩 Теоретическая справка:
Систему счисления p мы перебираем от 10 до 36, чтобы удовлетворять условиям нашей задачи (внутри выражения есть число 9) и для использования функции int().


👩‍💻 Код решения:
alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
for p in range(10, 36+1):
for x in alphabet[:p]:
for y in alphabet[:p]:
if int(f'24{x}9', p) + int(f'{y}{x}{y}3', p) == int(f'{x}4{y}0', p):
print(int(x+y+y, p))

# Ответ: 1688


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

1⃣ alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создается отсортированный список alphabet, содержащий цифры от 0 до 9 и буквы английского алфавита в верхнем регистре.


2⃣ for p in range(10, 36+1):
Запускается внешний цикл for, перебирающий значения от 10 до 36 (включительно) и присваивающий их переменной p.


3⃣ for x in alphabet[:p]:
Запускается первый вложенный цикл for, который перебирает элементы alphabet до p-го индекса (не включительно) и присваивает их переменной x.


4⃣ for y in alphabet[:p]:
Запускается второй вложенный цикл for, который также перебирает элементы alphabet до p-го индекса (не включительно) и присваивает их переменной y.


5⃣ if int(f'24{x}9', p) + int(f'{y}{x}{y}3', p) == int(f'{x}4{y}0', p):
Проверяется условие, что сумма двух чисел, с основанием p, равна третьему числу.


6⃣ print(int(x+y+y, p))
Если условие выполняется, выводится результат, в десятичное число с основанием p.


Понравился пост? Поддержи реакцией:
❤️‍🔥 - Обычный скучный лайк
⭐️ - Весит как 10 обычных лайков
😼 - Кандидат на самый лучший пост недели

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

Информатика ЕГЭ | чатик itpy 🧑‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
1188👍2
20 числа будет готова шпора по 14 номеру. В связи с этим есть идея собраться (бесплатный вебинар) в воскресенье 21 числа и порешать эти задачки. Как вам идея?
Anonymous Poll
90%
А давайте, было бы интересно присутствовать!
8%
🤔 Можно разобрать и другой номер..
2%
Не очень интересная затея.
Media is too big
VIEW IN TELEGRAM
🚩 Форматирование текста в Телеграме #useful #view

Мы уже делали подробный текстовый пост (прочитать можно здесь) о форматировании текста в Телеграме. Однако, учитывая, что в моем канале подписано много репетиторов, не помешает рассказывать о фишках Телеграма в формате коротких видео. Поэтому совместно с Lizzerd мы сделали для вас это короткое тестовое видео.

Если вам интересен такой контент, пожалуйста, поставьте лайк: ❤️‍🔥

Информатика ЕГЭ | itpy 👨‍💻
Тут отвечают на вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
86👍5