1. Как решать задание ЕГЭ
7. Задание проверяет умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд.
Пример задания
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки цифр;
А) заменить (\(v\), \(w\)).
Эта команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\). Например, выполнение команды
заменить (\(111\), \(27\))
преобразует строку \(05111150\) в строку \(0527150\).
Если в строке нет вхождений цепочки \(v\), то выполнение команды заменить (\(v\), \(w\)) не меняет эту строку;
Б) нашлось (\(v\)).
Эта команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда \(1\)
ИНАЧЕ команда \(2\)
КОНЕЦ ЕСЛИ
выполняется команда \(1\) (если условие истинно) или команда \(2\) (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из \(70\) идущих подряд цифр \(8\)? В ответе запиши полученную строку.
НАЧАЛО
ПОКА нашлось (\(2222\)) ИЛИ нашлось (\(8888\))
ЕСЛИ нашлось (\(2222\))
ТО заменить (\(2222\), \(88\))
ИНАЧЕ заменить (\(8888\), \(22\))
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Как решать задание?
Данное задание можно решать несколькими способами: с помощью логических рассуждений или при помощи языка программирования.
Мы рассмотрим вариант решения с помощью языка программирования Python.
Вспомнить, что такое процедуры и функции, можно тут.
Вспомнить, что такое алгоритмы ветвления, можно тут.
Вспомним алгоритмы ветвления в Python
ЕСЛИ (условие \(1\))
ТО (действие \(1\))
ИНАЧЕ (действие \(2\))
На Python выглядит следующим образом.
if (условие):
(действие \(1\))
else:
(действие \(2\))
Также вспомним метод replace в Python.
Данный метод возвращает копию строки, в которой все вхождения подстроки заменяются другой подстрокой.
Реализуем данный метод в ходе решения задания № \(12\). Проанализируем условие и определимся, какие операторы нам понадобятся.
ЕСЛИ (if) подстрока \(‘2222’\) встречается в строке \(s\), то (ставим двоеточие) заменяем четыре двойки на две восьмёрки — методом replace следующим образом:
\(s = s.replace (‘2222′, ’88’, 1)\).
Единица указывает на то, что такая замена будет произведена один раз
Иначе (else) заменим ‘\(8888\)’ на ‘\(22\)’ также методом replace.
\(s=s.replace(‘8888′, ’22’,1)\)
Нам необходимо узнать, какая строка останется в результате работы данной программы, поэтому в выводе запишем: print(\(s\)).
Как решить задание 24 ЕГЭ по информатике с использованием Python?
Вот пример кода на Python, который может помочь вам начать решение задания 24 ЕГЭ информатика:
# Пример решения задания 24 ЕГЭ информатика на Python # Задача: Найти среднее арифметическое элементов списка и вывести отрицательные элементы, превышающие среднее арифметическое. def solve_task(data): # Вычисляем среднее арифметическое элементов списка average = sum(data) / len(data) # Выводим отрицательные элементы, превышающие среднее арифметическое for num in data: if num < 0 and num >average: print(num) # Пример использования функции solve_task data = [1, -2, -3, 4, -5, 6, -7, 8, -9] solve_task(data)
Детальный ответ
Как решать задание 24 ЕГЭ информатика Python
Задание 24 ЕГЭ информатика по Python является одним из самых интересных и требующих глубокого понимания программирования. В этой статье мы рассмотрим подходы и примеры кода, которые помогут вам разобраться с решением данного задания.
Описание задания
Задание 24 состоит из следующих условий:
""" # Задание 24: # Дан текстовый файл, каждая строка которого содержит информацию о событиях # и их хронологии в следующем формате: день месяц год:событие. # На основе данных файла нужно сформировать словарь, где ключами будут года, # значениями - списки событий, отсортированные по возрастанию даты. # Напишите программу, которая решает данную задачу. """
Таким образом, вам нужно написать программу на Python, которая читает файл с информацией о событиях и их хронологии, а затем создает словарь, где ключами являются года, а значениями — списки событий, отсортированные по возрастанию даты.
Решение задания
Для решения данного задания мы можем использовать следующий алгоритм:
- Открыть файл с информацией о событиях.
- Прочитать каждую строку из файла и разделить ее на дату и событие.
- Извлечь год из даты и добавить событие в соответствующий список в словаре.
- Отсортировать каждый список событий по возрастанию даты.
- Вывести полученный словарь на экран.
Давайте посмотрим на пример реализации данного алгоритма:
# Открытие файла и создание словаря events_dict = <> with open('events.txt', 'r') as file: # Чтение каждой строки из файла for line in file: # Разделение строки на дату и событие date, event = line.strip().split(':') # Извлечение года из даты year = date.split()[2] # Добавление события в соответствующий список в словаре if year in events_dict: events_dict[year].append(event) else: events_dict[year] = [event] # Сортировка каждого списка событий по возрастанию даты for year in events_dict: events_dict[year].sort() # Вывод полученного словаря на экран for year, events in events_dict.items(): print(f": ")
В данном примере мы открываем файл ‘events.txt’, читаем каждую строку и разделяем ее на дату и событие. Затем мы извлекаем год из даты и добавляем событие в соответствующий список в словаре. После этого мы сортируем каждый список событий по возрастанию даты и выводим полученный словарь на экран.
Вы можете использовать данный код в своей программе, заменив ‘events.txt’ на имя вашего файла с информацией о событиях.
Заключение
Надеемся, что данная статья поможет вам разобраться с решением задания 24 ЕГЭ по информатике с использованием Python. Помните, что практика играет важную роль в освоении программирования, поэтому не забывайте тренироваться и решать различные задачи.
Удачи в изучении информатики!
ЕГЭ информатика: Python
В курсе изучается Python с нуля и полностью разбираются программные способы решения задач № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 из ЕГЭ 2024.
Начальный уровень
Сертификат Stepik
2 194 учащихся
Чему вы научитесь
- Получите все необходимые знания по Python для успешной сдачи КЕГЭ 2024 по информатике
- Научитесь решать № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 из КЕГЭ 2024
- Изучите условия, циклы, строки, работу с файлами, списки, множества, кортежи, функции и многое другое
- Овладеете базовыми алгоритмами в программировании
О курсе
Данный курс является второй ступенью полной подготовки к КЕГЭ 2024 по информатике.
✅ В курсе изучается вся необходимая теория по программированию на языке Python для ЕГЭ по информатике. Особенностью курса является изучение программирования на языке Python именно на задачах КЕГЭ. Курс будет полезен и тем, кто имеет опыт написания программ на Python, и тем, кто совсем не знаком с программированием.
✅ Приведены эффективные способы решения заданий ЕГЭ с помощью написания программы в Python. Разобраны все нюансы и хитрости решения задач ЕГЭ по информатике в Python.
✅ В курсе полностью разобраны программные способы решения задач № 1, 2, 5, 8, 12, 13, 14, 15, 16, 17, 23 ЕГЭ на языке программирования Python.
❗ После покупки курса вы можете начать его прохождение в любое время. Доступ к курсу останется у вас навсегда
Данный курс является частью курсов:
- Информатика ЕГЭ 2024. Путь к 100 баллам. № 1-23
- Информатика ЕГЭ 2024. Путь к 100 баллам. № 1-27
Для кого этот курс
Для тех, кто сдаёт ЕГЭ по информатике в 2024 году или в ближайшие года. Для всех желающих, кто интересуется программированием.
Начальные требования
Курс подходит для учеников с любым уровнем начальных знаний.
ЕГЭ по информатике 2022 — Задание 2 (Ай да Питон!)

Продолжаем наш видеокурс по подготовке к ЕГЭ по информатике 2022. Сегодня разоблачим второе задание!
Кто незнаком с основными логическими операциями, можете посмотреть прошлогоднюю статью по заданию 2 из ЕГЭ по информатике.
В этой статье будут раскрыты методики решения 2 задания через язык программирования Питон.
Будем перебирать для каждой логической переменной все возможные варианты в программе. А логическая переменная всего два значения может принимать: 1 или 0 (истину или ложь). Таким образом, если к примеру у нас 4 переменные, мы получим 2 4 =16 различных комбинаций.
Кто знаком с мощнейшим методом для 2 задания из ЕГЭ по информатике, о котором я рассказывал в прошлогодней статье, тот поймёт, что мы будем применять тот же самый мощнейший метод, но автоматизированный с помощью питона.
Нам нужно будет запрограммировать логическую функцию на языке Питон. Вот таблица, которая поможет это сделать.
| Логическая операция | Представление в Питоне |
| Отрицание ¬ | not() |
| Логическое умножение ∧ | and |
| Логическое сложение ∨ | or |
| Следование A ⟶ B | not(A) or B |
| Равносильность ≡ | == |
Перейдём к практике решения задач задания 2 с помощью языка программирования Python.
Миша заполнял таблицу истинности логической функции F
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx.
Решать задачу будем с помощью шаблона на языке Python (Питон).
print('x y z w') for x in range(0, 2): for y in range(0, 2): for w in range(0, 2): for z in range(0, 2): if (not(w) or z) and ((not(y) or x) == (not(z) or y)): print(x, y, z, w)
В задаче у нас 4 переменные, значит, формируем 4 вложенных цикла. В каждом цикле перебираем все возможные значения для конкретной переменной. Мы перебираем значения 0 и 1.
Функция должна выдавать всегда 1 (единицу, истину). Внутри всех циклов прописываем условие, которое срабатывает как раз на истину. В этом условии прописываем нашу функцию. Если наша функция будет выдавать истину, то мы распечатаем значения переменных, при которых это произошло. Если функция будет выдавать ложь, значит, ничего распечатано не будет.
Четыре вложенных цикла проверяют все возможные варианты (2 4 = 16 вариантов), и мы получим таблицу истинности, почти такую же, как нам и дали в условии задачи.
Так же вверху печатаем названия переменных, чтобы знать, какие значения каким переменным принадлежат.
Запустим программу, и на экране распечатается табличка:
В получившийся табличке может быть больше строчек, чем в условии. Так же при поиске переменных нельзя опираться на порядок, в котором идут нули и единицы в нашей табличке. А можно опираться лишь на количество нулей и единиц в строчках или столбцах.
Можно вычеркнуть первую строчку и последнюю, потому что в таблице, которую дали в условии, в каждой строчке есть хотя бы один ноль и хотя бы одна единица.
Сразу видно, что первый столбец принадлежит переменной x, только там могут быть все единицы.
Второй столбец принадлежит переменной w, только там могут быть все нули.
У нас остались две пустые клеточки в самой таблице. Нам нужно где-то поставить единицу, а где-то ноль, потому что у нас остались столбцы с двумя единицами и одним нулём, а так же с двумя нулями и одной единицей. Если мы в третий столбец поставим единицу, а в четвёртый ноль, то первая строчка и вторая будут совпадать.
А в условии сказано, что строки не должны повторяться. Поэтому нужно ноль и единицу расставить наоборот.
Получается, что в третий столбец идёт z, а в четвёртый y
Ответ: xwzy
Посмотрим, как решать задачи второго задания из ЕГЭ по информатике, когда функция выдаёт нули в таблице истинности.
Задача (Классическая, закрепление)
Миша заполнял таблицу истинности функции (x ≡ ¬y) → ((x ∧ w) ≡ z), но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx.
Воспользуемся программой на языке Python.
print('x y z w') for x in range(0, 2): for y in range(0, 2): for w in range(0, 2): for z in range(0, 2): if not( not(( x == (not(y)) )) or ((x and w) == z) ): print(x, y, z, w)
От прошлой программы эта программа отличается только функцией!
В таблице видим, что функция должна выдавать ноль. Поэтому в условии мы функцию «оборачиваем» в not().
После == операцию not() мы заключили в скобки, чтобы не было синтаксической ошибки.
Получаем следующую таблицу истинности:
Разгадаем, где какая переменная находится.
Последнюю строку из нашей таблицы можно вычеркнуть, потому что, если мы вычеркнем другую строку, то не получится столбца, где все три единицы, а он должен быть.
Получается, что второй столбец достаётся переменной z.
В первом столбце должно быть две единицы. На эту роль подходит переменная y.
В нашей таблице нет строчки, где все единицы, значит, во второй строчке в пустом окошке выставляем ноль. И в этой строчке нулём обладает переменная x. Следовательно, в третьем столбце будет находится x.
А в последний столбец идёт переменная w по остаточному принципу.
Ответ: yzxw
А как Питон справится с более сложной функцией из примерного варианта ЕГЭ по информатике?
Задача (Сложная функция)
Логическая функция F задаётся выражением ((x → y ) ∧ (y → w)) ∨ (z ≡ ( x ∨ y)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.

В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx.
Запрограммируем функцию на языке Python.
print('x y z w') for x in range(0, 2): for y in range(0, 2): for w in range(0, 2): for z in range(0, 2): if not( ((not(x) or y) and (not(y) or w)) or (z == (x or y)) ): print(x, y, z, w)
Запустим программу и расставим переменные по своим местам.
Переменная z может быть только в третьем столбце.
Во второй столбец идёт переменная w, только этот столбец может иметь одну единицу.
Посмотрим на строчку, где у w стоит единица. В этой же строчке и у x единица. Значит, x идёт в последний столбец, а y в первый столбец.
Ответ: ywzx
Тот же шаблон работает, когда у нас во втором задании три переменные.
Логическая функция F задаётся выражением (¬x ∧ z) ∨ (¬x ∧ ¬y ∧ ¬z)
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F истинна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.
Для трёх переменных шаблон на Питоне отлично работает.
print('x y z') for x in range(0, 2): for y in range(0, 2): for z in range(0, 2): if (not(x) and z) or (not(x) and not(y) and not(z)): print(x, y, z)
Здесь и так понятно, куда какая переменная идёт.

Ответ: yxz
Посмотрим, как решать задачи из второго задания ЕГЭ по информатике, когда в таблице истинности разные значения у функции F.
Задача (Разные значения функции)
Логическая функция F задаётся выражением (¬a ∨ b ∨ ¬c) ∧ (b ∨ ¬c). Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных a, b, c.
В ответе напишите буквы a, b, c в том порядке, в котором идут соответствующие им столбцы (без разделителей).
Когда такая ситуация, что функция имеет различные значения в таблице, мы можем проверить, какие значения переменных дают единицу у всей функции. А потом проверить, какие значения выдают ноль у всей функции, если это потребуется.
print('a b c') for a in range(0, 2): for b in range(0, 2): for c in range(0, 2): if (not(a) or b or not(c)) and (b or not(c)): print(a, b, c)
В таблице 6 строчек, в которых главная функция превращается в единицу. Далее эти строчки и будем рассматривать. У нас тоже получилось 6 строчек.
Переменная a имеет три единицы. Это второй столбец, потому что там три единицы.
Переменная b имеет четыре единицы, значит, она расположена в первом столбце.
Переменной c достаётся последний столбец.
Ещё одна интересная задача для подготовки к ЕГЭ по информатике 2022.
Логическая функция F задаётся выражением a ≡ b ∨ b → c.
На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных a, b, c.
Подвох заключается в том, что если мы переведём бездумно функцию на язык Питон, то получится a==b or not (b) or c. Но у нас существуют приоритеты для логических операций, которые описаны в прошлогодней статье по подготовке к ЕГЭ по информатике.
В начале должно обрабатываться или, которое было изначально. Затем должно обработаться следование, а потом равносильность. А если мы переведём формулу бездумно, порядок будет не правильный.
Операцию b ∨ b можно представить, как просто b. Ведь, если b принимает значение 0, тогда будет 0 ∨ 0 = 0. Если значение будет 1, то 1 ∨ 1 = 1. Поэтому формулу можно переписать следующим образом:
a ≡ b → c
a == ( not (b) or c)
В предыдущих задачах нам не приходилось думать над приоритетами, потому что везде были расставлены скобки. И в основном они уже расставлены в задачах второго задания из ЕГЭ по информатике.
Дальше решаем как обычно.
print('a b c') for a in range(0, 2): for b in range(0, 2): for c in range(0, 2): if a == (not(b) or c): print(a, b, c)
Последнюю строчку можно вычеркнуть из нашей таблицы, т.к. у нас в каждой строчке есть хотя бы один ноль.

Последний столбец занимает переменная a, т.к. только в последний столбец может влезть две единицы.
В строчке, где у a ноль, так же ноль и у переменной c. Значит, во второй столбец идёт переменная c. Если мы ноль поставим в первой строчке в первом столбце, то получится первый столбец из всех нулей. А такого у нас в таблице истинности нет.
Тогда переменная b в первом столбце.
