Стоит ли добавить разборы основных прототипов? Хотя они уже представлены в шпаргалках 🤔
Anonymous Poll
69%
Да, конечно надо
20%
Смысла нет, можно улучшать шпаргалки
12%
Нет, для меня не актуально
Forwarded from Информатика ОГЭ | itpy 👨💻
Множества — это неупорядоченные коллекции уникальных элементов. Они полезны для хранения элементов без дублирования и для выполнения операций над множествами, таких как объединение, пересечение и разность. Давайте рассмотрим основы множеств в Python.
# Создание пустого множества
my_set = set()
# Создание множества с элементами
my_set = {1, 2, 3, 4, 5}
# Пример множества со строками
fruits = {"apple", "banana", "cherry"}
# Добавление элемента в множество
my_set.add(6)
print(my_set) # {1, 2, 3, 4, 5, 6}
# Удаление элемента из множества
my_set.remove(3)
print(my_set) # {1, 2, 4, 5, 6}
# Проверка наличия элемента в множестве
print(4 in my_set) # True
print(10 in my_set) # False
Множества в Python — мощный инструмент для работы с уникальными данными и выполнения различных операций над ними.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
Множества в Python поддерживают множество операций, таких как объединение, пересечение, разность и симметрическая разность. Давайте рассмотрим их подробнее.
Объединение возвращает множество, содержащее все элементы обоих множеств.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set) # {1, 2, 3, 4, 5}
Пересечение возвращает множество, содержащее только общие элементы обоих множеств.
intersection_set = set1.intersection(set2)
print(intersection_set) # {3}
Разность возвращает множество, содержащее элементы, которые есть в первом множестве, но отсутствуют во втором.
difference_set = set1.difference(set2)
print(difference_set) # {1, 2}
Симметрическая разность возвращает множество, содержащее элементы, которые присутствуют в одном из множеств, но не в обоих.
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set) # {1, 2, 4, 5}
Эти операции помогают эффективно работать с множествами и управлять уникальными данными.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
Таким образом можно найти подсказку, исправить опечатку в своем коде, или найти вдохновение в чужом решении, чтобы написать более оптимальный код
Я настоятельно призываю вас делиться своими вариантами решений, даже если в задаче просто просят "оставить ответ"
P.S. 26-27 номера скоро будут добавлены
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Пересдача 04.07.2024
Уровень: Базовый
Все пятибуквенные слова, в составе которых могут быть только русские буквы Л, А, Й, М, записаны в алфавитном порядке и пронумерованы начиная с 1.
Вот начало списка:
1. ААААА
2. ААААЙ
3. ААААЛ
4. ААААМ
5. АААЙА
Под каким номером в списке идёт последнее слово, которое не содержит ни одной буквы М, ни одной буквы Л и не содержит букв Й стоящих рядом?
Простейшую вариацию решения этого номера опубликую в комментариях к этому посту. Делитесь своими решениями!
from itertools import *
R = []
for num, p in enumerate(product(sorted('ЛАЙМ'), repeat=5), 1):
word = ''.join(p)
if 'М' not in word and 'Л' not in word:
if 'ЙЙ' not in word:
R.append(num)
print(max(R))
# Ответ: 274
from itertools import *
Импортируем все функции из модуля itertools для работы с итераторами.
R = []
Инициализируем пустой список R для хранения номеров подходящих комбинаций.
for num, p in enumerate(product(sorted('ЛАЙМ'), repeat=5), 1):
Используем product для генерации всех возможных комбинаций 5 букв из слова 'ЛАЙМ', сортируем буквы и пронумеровываем их с 1.
word = ''.join(p)
Объединяем кортеж p в строку для получения текущего слова.
if 'М' not in word and 'Л' not in word:
Проверяем, что буквы 'М' и 'Л' отсутствуют в текущем слове.
if 'ЙЙ' not in word:
Проверяем, что двойная буква 'ЙЙ' отсутствует в текущем слове.
R.append(num)
Если условия выполнены, добавляем номер комбинации в список R.
print(max(R))
Выводим максимальный номер из списка R, который соответствует самой последней подходящей комбинации.
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Резервный день 19.06.2024
Уровень: Базовый
Определите количество 15-ричных пятизначных чисел, в записи которых ровно одна цифра 8 и не менее двух цифр с числовым значением, превышающим 9.
В подобных задачах с цифрами обязательно необходимо добавлять проверку num[0] != '0', так как число не может начинаться с нуля.
from itertools import *
cnt = 0
for p in product('0123456789ABCDE', repeat=5):
num = ''.join(p)
if num[0] != '0' and num.count('8') == 1:
if len([x for x in num if int(x, 15) > 9]) >= 2:
cnt += 1
print(cnt)
# Ответ: 83175
from itertools import *
Импортируем все функции из модуля itertools для работы с итераторами.
cnt = 0
Инициализируем переменную счётчика cnt для подсчета подходящих комбинаций.
for p in product('0123456789ABCDE', repeat=5):
Используем функцию product для генерации всех возможных комбинаций длиной 5 из символов '0123456789ABCDE'.
num = ''.join(p)
Объединяем кортеж p в строку для получения текущего числа в виде строки.
if num[0] != '0' and num.count('8') == 1:
Проверяем, что первое число не равняется '0' и цифра '8' встречается в строке ровно один раз.
if len([x for x in num if int(x, 15) > 9]) >= 2:
Проверяем, что в числе присутствует как минимум две цифры, больше 9 в шестнадцатеричном представлении, то есть 'A', 'B', 'C', 'D', 'E'.
cnt += 1
Если все условия выполнены, увеличиваем счётчик cnt на 1.
print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих комбинаций.
Наша Stepik подборкой задач
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что покажет этот код?
Anonymous Quiz
49%
{1, 1.0, True}
19%
{1}
5%
{1, 1.0}
9%
{1, True}
5%
{}
12%
Произойдет ошибка
Please open Telegram to view this post
VIEW IN TELEGRAM
Что покажет приведенный код? 🤨
Anonymous Quiz
43%
{1: 'one', 1.0: 'two', True: 'three'}
19%
{1: 'one'}
5%
{True: 'three'}
7%
{1.0: 'two'}
12%
{1: 'three'}
14%
Произойдет ошибка
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Пересдача 04.07.2024
Уровень: Базовый
Определите количество строк таблицы, в которых сумма наибольшего и наименьшего чисел меньше суммы двух оставшихся.
Для решения этого номера кодом необходимо конвертировать .xls файл в .txt, но на экзамене будет доступен .csv формат, который можно будет открыть сразу же без конвертации.
cnt = 0
for s in open('9.txt'):
M = sorted([int(x) for x in s.split()])
# if M[0] + M[-1] < M[1] + M[2]:
# if max(M) + min(M) < sum(M) - max(M) - min(M):
if M[0] + M[-1] < M[1] + M[2]:
cnt += 1
print(cnt)
# Ответ: 9997
cnt = 0
Инициализируем переменную счётчика cnt для подсчета строк, которые удовлетворяют условию.
for s in open('9.txt'):
Открываем файл '9.txt' и построчно читаем его содержимое в цикле.
M = sorted([int(x) for x in s.split()])
Разбиваем строку s на отдельные элементы, приводим их к целым числам и сортируем их, результат сохраняем в список M.
if M[0] + M[-1] < M[1] + M[2]:
Проверяем условие: сумма первого и последнего элементов списка меньше суммы второго и третьего элементов.
cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.
print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству строк, удовлетворяющих условию.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Основная волна 07.06.2024
Уровень: Базовый
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 100 идущих подряд
цифр 9?
ПОКА нашлось (33333) ИЛИ нашлось (999)
ЕСЛИ нашлось (33333)
ТО заменить (33333, 99)
ИНАЧЕ заменить (999, 3)
Задачи 12 номера можно назвать типовыми (не редкий случай для нашего экзамена), запомнить нужно только несколько основных вещей: 1) строка умноженная на число будет дублироваться 2) всегда пересоздаем строку s = s.replace() иначе строка не изменится 3) в методе .replace('a', 'b', 1) всегда ставим единичку - так как замены производятся последовательно.
s = '9' * 100
while '33333' in s or '999' in s:
if '33333' in s:
s = s.replace('33333', '99', 1)
else:
s = s.replace('999', '3', 1)
print(s)
# Ответ: 333
s = '9' * 100
Инициализируем строку s, состоящую из 100 символов '9'.
while '33333' in s or '999' in s:
Запускаем цикл, который будет продолжаться до тех пор, пока в строке s присутствует подстрока '33333' или '999'.
if '33333' in s:
Проверяем, присутствует ли в строке подстрока '33333'.
s = s.replace('33333', '99', 1)
Если '33333' присутствует, заменяем её на '99' (первая замена слева направо).
else:
Если подстроки '33333' нет в строке, выполняется следующий блок кода.
s = s.replace('999', '3', 1)
Если '999' присутствует, заменяем её на '3' (первая замена слева направо).
print(s)
Выводим итоговое значение строки s после завершения всех замен, когда условия больше не выполняются.
Информатика ЕГЭ | itpy
Наша Stepik подборкой задач
Please open Telegram to view this post
VIEW IN TELEGRAM
2 6 5 4
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: Пресдача 04.07.2024
Уровень: Базовый
Сеть задана IP-адресом 115.192.0.0 и сетевой маской 255.192.0.0.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?
Во всех ФИПИ вариантах/пробниках и на основном экзамене был представлен именно этот прототип, занятное наблюдение!
from ipaddress import *
net = ip_network('115.192.0.0/255.192.0.0', 0)
cnt = 0
for ip in net:
b_ip = f'{ip:b}'
if b_ip.count('1') % 3 != 0:
cnt += 1
print(cnt)
# Ответ: 2796202
1⃣
from ipaddress import *
Импортируем все функции из модуля ipaddress для работы с IP адресами и сетями.
net = ip_network('115.192.0.0/255.192.0.0', 0)
Создаём объект сети net, используя адрес сети '115.192.0.0' и маску подсети '255.192.0.0'. 0 указывает на IPv4-адрес.
cnt = 0
Инициализируем переменную счётчика cnt для подсчета IP-адресов, удовлетворяющих условию.
for ip in net:
Проходим в цикле по каждому IP-адресу в сети net.
b_ip = f'{ip:b}'
Преобразуем текущий IP-адрес в двоичное строковое представление и сохраняем его в переменную b_ip.
if b_ip.count('1') % 3 != 0:
Проверяем, что количество единиц в двоичном представлении IP-адреса не кратно 3.
cnt += 1
Если условие выполняется, увеличиваем счётчик cnt на 1.
print(cnt)
Выводим итоговое значение счётчика cnt, которое соответствует количеству подходящих IP-адресов.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
3 5 5 5
This media is not supported in your browser
VIEW IN TELEGRAM
Автор: PRO100EGE Вариант №7
Уровень: Базовый
Операнды арифметического выражения x1x_16 + x3x3_8 записаны в системах счисления с основанием 16 и 8. В записи чисел переменных x обозначена неизвестная цифра. Определите x, при котором значение данного арифметического выражения является степенью двойки. В ответе укажите x.
Обратите внимание на строчку M = [2 ** x for x in range(0, 100)], здесь мы собираем список всех степеней двойки до 2**100.
alphabet = sorted('1234567890QWERTYUIOPASDFGHJKLZXCVBNM')
M = [2 ** x for x in range(0, 100)]
for x in alphabet[:8]:
a = int(f'{x}1{x}', 16)
b = int(f'{x}3{x}3', 8)
if a + b in M:
print(x)
# Ответ: 5
1⃣
alphabet = sorted('1234567890QWERTYUIOPASDFGHJKLZXCVBNM')
Создаем отсортированный список символов из строки, содержащей цифры и заглавные буквы английского алфавита.
M = [2 ** x for x in range(0, 100)]
Создаем список степеней двойки от 2^0 до 2^99 (всего 100 элементов).
for x in alphabet[:8]:
Проходим в цикле по первым 8 символам из отсортированного списка alphabet.
a = int(f'{x}1{x}', 16)
Формируем строку вида 'x1x', где x - текущий символ из alphabet, и преобразуем её из шестнадцатеричной в десятичное число.
b = int(f'{x}3{x}3', 8)
Формируем строку вида 'x3x3', где x - текущий символ из alphabet, и преобразуем её из восьмеричной в десятичное число.
if a + b in M:
Проверяем, входит ли сумма чисел a и b в список степеней двойки M.
print(x)
Если условие выполняется, выводим на экран текущий символ x.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
2 6 5 4
Автор: Пробник ИМЦ СПб,
6594
Уровень: Базовый
Условие задачи:
Операнды арифметического выражения записаны в системе счисления с основанием 13: 753x2_13 + 2x173_13
В записи чисел переменной x обозначена неизвестная цифра из алфавита 13-ричной системы счисления.
Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 12.
Для найденного значения x вычислите частное от деления значения арифметического выражения на 12 и укажите его в ответе в десятичной системе счисления.
Please open Telegram to view this post
VIEW IN TELEGRAM
Отвечаю на часто задаваемый вопрос по поводу построения правильной траектории (road map) подготовки к экзамену ЕГЭ по информатике. Внимание! Никаких супер секретных методик я вам не расскажу; рецепт очень банальный, но рабочий. Дайте обратную связь, если вам такой формат подачи материалов заходит
Таймкоды для вашего удобства:
00:00 - Мини-вступление
00:45 - Почему выбираем именно Python
02:48 - Какие темы Python нужно освоить
03:50 - С каких номеров начать разбор ЕГЭ
07:08 - Когда начать разбирать 26, 27 номера
Приложу текстовый "план" в комментариях
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
3 10 6 5 3
Говорят, вышли демки ОГЭ 2025, все ринулись их смотреть и поломали Рунет 🫠
Мы же ждем демоверсию ЕГЭ. Очень интересно, что же они там поменяют🤔
Мы же ждем демоверсию ЕГЭ. Очень интересно, что же они там поменяют
Please open Telegram to view this post
VIEW IN TELEGRAM
📚 Друзья, я собираю бесплатный курс по Python для вас и очень нуждаюсь в вашей обратной связи. Кратко: курс будет 100% бесплатным, планирую добавить видеоматериалы, подробно расписать темы и структурировать их, возможно, добавить еще какие-то главы или уроки.
Что вы думаете по этому поводу? Буду благодарен за любую обратную связь! Пишите в чатик или мне: @ilandroxxy свои предложения и пожелания 🙏
Информатика ЕГЭ | itpy 👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2 9 6 5❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Уровень: Средний
Определите количество троек элементов последовательности, в которых не более одного из трёх элементов являются одновременно четырёхзначными и чётными числами. А сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 3 в девятеричной системе счисления.
В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек.
В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
Файл доступен в комментариях👇
В данной задаче полезно заметить, что найти число оканчивающееся на 3 в девятеричной системе счисления можно банальным делением, так как последняя цифра троичной записи будет являться первым остатком: x % 9 == 3.
Дополнительный вариант решения тоже оставлю в комментариях.
M = [int(x) for x in open('17.txt')]
A = [x for x in M if len(str(abs(x))) == 4 and abs(x) % 2 == 0]
B = max([x for x in M if x % 9 == 3])
R = []
for i in range(len(M) - 2):
x, y, z = M[i], M[i + 1], M[i + 2]
if (x in A) + (y in A) + (z in A) <= 1:
if (x + y + z) <= B:
R.append(x + y + z)
print(len(R), max(R))
# Ответ: 6281 99699
M = [int(x) for x in open('17.txt')]
Читаем данные из файла '17.txt', преобразуем каждую строку в целое число и создаем список M.
A = [x for x in M if len(str(abs(x))) == 4 and abs(x) % 2 == 0]
Создаем список A из чисел из M, которые имеют ровно 4 цифры и являются четными.
B = max([x for x in M if x % 9 == 3])
Находим максимальное значение среди чисел из M, которые при делении на 9 дают остаток 3, и сохраняем его в B.
R = []
Инициализируем пустой список R для хранения результатов сумм, удовлетворяющих условиям.
for i in range(len(M) - 2):
Проходим по списку M, используя индексы от 0 до (длина M - 3), чтобы избежать выхода за пределы при обращении к элементам M[i+2].
x, y, z = M[i], M[i + 1], M[i + 2]
Выбираем три последовательных элемента списка M.
if (x in A) + (y in A) + (z in A) <= 1:
Проверяем условие, что среди трех выбранных чисел не более одного числа принадлежит списку A.
if (x + y + z) <= B:
Проверяем условие, что сумма трех выбранных чисел меньше или равна значению B.
R.append(x + y + z)
Если оба условия выполняются, добавляем сумму (x+y+z) в список R.
print(len(R), max(R))
Выводим количество элементов в списке R и максимальное значение в списке R.
Информатика ЕГЭ | itpy
Поддержать автора донатом
Please open Telegram to view this post
VIEW IN TELEGRAM
2 6 4 3