Найти в Дзене
МОЙ РЕПЕТИТОР

Работа с логическими формулами в Python на примере задания №2 ЕГЭ (Часть 3)

🎓 Логические формулы важно уметь решать как на ЕГЭ по информатике, так и в программировании. Задание № 2 ЕГЭ как раз предназначено для отработки этого умения. ❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ДАННЫМ МАТЕРИАЛОМ ⤵ 📌 ПЕРВАЯ ЧАСТЬ 📌 ВТОРАЯ ЧАСТЬ Если данная тема вам уже знакома и логические выражения не вызывают трудностей, переходите к разбору задания № 2 ЕГЭ ⤵ 📥 Условие задачи → → Решение данной задачи ⇪ будет состоять из 3 основных этапов: 🚨 LET'S GO → Работа с условием задачи 📍Для успешного решения важно внимательно изучить условие, перечитать его и зафиксировать все ключевые моменты → → Цветным маркером выделены важные моменты, которые понадобятся для дальнейшего решения задачи: БОЛЕЕ ПОДРОБНО О КЛЮЧЕВЫХ МОМЕНТАХ ИЗ УСЛОВИЯ ЗАДАЧИ: F = (x ∨ y) → (z ≡ х) → Ответ: 0. Так как в таблице истинности (F) во всех строках стоит значение 0 → Каждая строка в таблице истинности должна отличаться от другой строки. То есть все строки должны быть разными ❕Первая и вто
Оглавление

🎓 Логические формулы важно уметь решать как на ЕГЭ по информатике, так и в программировании. Задание № 2 ЕГЭ как раз предназначено для отработки этого умения.

❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ДАННЫМ МАТЕРИАЛОМ ⤵

📌 ПЕРВАЯ ЧАСТЬ

📌 ВТОРАЯ ЧАСТЬ

Если данная тема вам уже знакома и логические выражения не вызывают трудностей, переходите к разбору задания № 2 ЕГЭ ⤵

📥 Условие задачи →

-2
Условие задачи ЕГЭ задание №2 «Строки с пропущенными значениями».
Условие задачи ЕГЭ задание №2 «Строки с пропущенными значениями».

→ Решение данной задачи будет состоять из 3 основных этапов:

-4

🚨 LET'S GO →

I ЭТАП

Работа с условием задачи

📍Для успешного решения важно внимательно изучить условие, перечитать его и зафиксировать все ключевые моменты →

→ Цветным маркером выделены важные моменты, которые понадобятся для дальнейшего решения задачи:

Важные моменты из условия задачи.
Важные моменты из условия задачи.

БОЛЕЕ ПОДРОБНО О КЛЮЧЕВЫХ МОМЕНТАХ ИЗ УСЛОВИЯ ЗАДАЧИ:

  • Какая логическая функция указана в условии задачи?

F = (x ∨ y) → (z ≡ х)

-6

  • Чему равна функция (F) по таблице из условия?

→ Ответ: 0. Так как в таблице истинности (F) во всех строках стоит значение 0

-7
  • Что значит «Неповторяющиеся строки» в исходной таблице?

→ Каждая строка в таблице истинности должна отличаться от другой строки. То есть все строки должны быть разными

❕Первая и вторая строки в обоих таблицах всегда различны:

1️⃣Первая таблица: 000 vs 100

2️⃣Вторая таблица: 100 vs 101

  • Что необходимо найти?

→ В каком порядке будут расположены переменные (x, y, z) в исходной таблице истинности

  • В каком виде нужно записать ответ?

→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы

Работа с условием задачи завершена. Переходим к следующему этапу →

II ЭТАП

Построение таблицы истинности в Python

📍Построение таблицы истинности можно выполнить без использования Python. Например, в Paint, Excel или на листке бумаги. В данном случае, Python эффективнее справляется с поставленной задачей.

-10

📢 Основные моменты при создании таблицы истинности в Python:

  • Определить количество переменных в задаче

📄Из условия задачи следует, что в ней используются три переменные: x, y и z.

  • Запустить столько циклов (for), сколько переменных в условии

📄В данном примере 3 переменные (x, y, z) ⇒ Необходимо запустить 3 цикла (for). Циклы (for) должны быть вложенными - то есть один внутри другого.

  • Добавить две команды print(), в начало и конец программы
Код программы на Python для создания таблицы истинности из трёх переменных (x, y, z). Вывод на экран всех возможных комбинаций.
Код программы на Python для создания таблицы истинности из трёх переменных (x, y, z). Вывод на экран всех возможных комбинаций.

→ Далее необходимо записать записать функцию F на язык Python

На данном этапе требуется реализовать функцию (F) в программном коде ⤵

-12

→ Чтобы правильно записать формулу необходимо каждый логический оператор перевести на язык Python ⤵

-13

Внимательно смотрим на исходную формулу (F) и определяем какие операторы нужно взять:

-14
  • V - дизъюнкция (логическое сложение)
  • - импликация
  • ≡ - эквивалентность (логическое умножение)

Теперь смотрим на таблицу для преобразования логических выражений

-15

→ Переписываем функцию (F) на язык Python и добавляем в исходный код ⤵

Код программы для составления таблицы истинности исходной функции (F) на языке Python.
Код программы для составления таблицы истинности исходной функции (F) на языке Python.

→ Теперь необходимо оставить только необходимые наборы переменных из таблицы истинности:

Нужно отставить только те значения в Python, которые тоже равны 0, как и в условии задачи

Код программы для получения таблицы истинности в Python, по заданной функции (f).
Код программы для получения таблицы истинности в Python, по заданной функции (f).

→ Отлично ✊ Таблица истинности в Python успешно построена, а необходимые комбинации переменных (x, y, z) получены. Можно переходить к следующему этапу →

III ЭТАП

Работа с таблицами

На предыдущем этапе была построена таблица истинности по функции (f) в Python. Теперь необходимо сопоставить данные в обоих таблицах (из условия и из Python)

❕Для работы с таблицами истинности можно использовать Excel (Р7 - офис) или Paint. Необходимо перенести данные из Python и условия в Excel (Paint).

-18

→ Для более комфортной работы с данными таблицы истинности будут представлены в таком виде ⤵

-19
  • TABLE FROM CONDITION — таблица истинности из условия
  • TABLER FROM PYTHON — таблица истинности из Python

❕Важная деталь

У внимательного читателя мог возникнуть следующий вопрос:

— ПОЧЕМУ КОЛИЧЕСТВО СТРОК В ТАБЛИЦАХ РАЗНОЕ? В ПЕРВОЙ ТАБЛИЦЕ ДВЕ СТРОКИ, А ВО ВТОРОЙ ТРИ. ЭТО ОШИБКА?

Ответ:

НЕТ, ЭТО НЕ ЯВЛЯЕТСЯ ОШИБКОЙ — ТАКАЯ СИТУАЦИЯ ВОЗМОЖНА.

В данном случае первая таблица истинности содержит не все возможные наборы переменных. Проще говоря, один из наборов просто отсутствует в таблице истинности из условия (TABLE FROM CONDITION).

-20

→ ТЕПЕРЬ ПРИСТУПИМ К РАБОТЕ С ТАБЛИЦАМИ ⤵

Определение верного порядка переменных

с помощью логических рассуждений и поиска закономерностей

Внимательно смотрим на таблицу истинности из условия (TABLE FROM CONDITION)

📢 РАБОТА ПО СТОЛБЦАМ

Необходимо проанализировать каждый столбец.

1. В первом столбце нет никаких значений (пустые ячейки)

-21

2. Во втором столбце записаны два нуля — возможно, именно на этот момент стоит обратить внимание❕ Второй столбец — единственный столбец, в котором точно расположены два нуля.

→ Необходимо зафиксировать данный момент и теперь посмотреть на таблицу истинности из Python

-22

Внимательно смотрим на таблицу истинности из Python (TABLE FROM PYTHON)

Вновь анализируем каждый столбец:

  • 1 столбец : значения = 0 | 1 | 1 (пока никаких совпадений с таблицей из условия) ⤵
-23
  • 2 столбец : значения = 1 | 0 | 1 (тоже никаких закономерностей) ⤵
-24
  • 3 столбец : значения = 1 | 0 | 0 (есть совпадение 💣)

Что это значит?

— Набор для переменной (z) включает в себя два нуля. И это единственный набор в котором есть два нуля. Ни в переменной (х) ни в переменной (у) такого нет →

-25

Получается, что и в левой, и в правой таблице существует по одному набору с двумя нулями ⤵

-26

Следовательно, можно сделать вывод, что второй столбец в таблице истинности — переменная (z)

-27

⭐Отлично! На данном этапе удалось определить одну из переменных. Движемся дальше →

Вновь, внимательно смотрим на таблицу истинности из условия (TABLE FROM CONDITION)

📢 РАБОТА ПО СТРОКАМ

Теперь попробуем проанализировать каждую строку.

1. В первой строке записаны два нуля. 🔒Зафиксировали данный момент ⤵

-28

2. Во второй строке записан один ноль и две пустые ячейки. По данной строке трудно установить какие-либо закономерности ⤵

-29

Возвращаемся к первой строке и теперь внимательно смотрим на таблицу истинности из Python (TABLE FROM PYTHON)

Вновь анализируем каждую строку:

  • 1 строка : значения = 0 | 1 | 1 (пока никаких совпадений с таблицей из условия) ⤵
-30
  • 2 строка : значения = 1 | 0 | 0 (есть совпадение 💣)
-31

Что это значит?

— Только во второй строке Python находятся два нуля. В первой и третьей строках подобного набора значений нет →

-32

Следовательно, можно сделать вывод, что первая строка в таблице из условия и вторая строка в таблице из Python — ОДИНАКОВЫЕ

Что это значит?

— По расположению переменных в таблице Python можно попробовать определить переменные в таблице из условия →

-33

→ Логические выводы, которые можно сделать на основе найденной закономерности:

  • Обе строки содержат по два нуля ( _ 0 0 и 1 0 0)
-34
  • В первой таблице в первой строке ( _ 0 0) отсутствует одна цифра
  • Следовательно, пустая ячейка в первой строке равна 1
-36

⭐ Удалось определить значение первой строки в левой таблице из условия задачи (1 0 0).

→ ПОПРОБУЕМ ПРОДОЛЖИТЬ РАБОТУ С ДАННОЙ СТРОКОЙ

ЛОГИЧЕСКИЕ РАССУЖДЕНИЯ:

  • Первая строка таблицы из условия (TABLE FROM CONDITION) содержит одну единицу и два нуля (1 0 0)
  • В таблице из Python есть точно такой же набор — это было установлено ранее (1 0 0)
  • В правой таблице точно определено, что (y = 0), а (z = 1). Отсюда следует, что значение 1 — это переменная (х)

Следовательно, в левой таблице единица также соответствует переменной (x) ⤵

-37

⭐Отлично! На данном этапе удалось определить значение переменной в пустой ячейке. Движемся дальше →

Необходимо вновь посмотреть на первую строку из левой таблицы истинности:

-38

→ 2 из 3 переменных уже определены. Поэтому, методом исключения остаётся единственный незанятый столбец — (y)

-39

Ура! 😎 Все переменные найдены!

❕Тем не менее таблица истинности заполнена не полностью. Чтобы убедиться в правильности ответа, определим значения в пустых ячейках.

Внимательно смотрим на обе таблицы истинности (TABLE FROM CONDITION и TABLE FROM PYTHON) →

📢 РАБОТА ПО СТОЛБЦАМ

И в левой и в правой таблице есть столбец (z) который полностью определён, то есть известны все его значения →

-40

→ ЛОГИЧЕСКИЕ РАССУЖДЕНИЯ:

  • В левой таблице переменная (z) принимает только два значения — оба равны 0
-41
  • Если посмотреть на правую таблицу, можно заметить, что там присутствует набор где (z = 1)
-42
  • Следовательно, набор где (z = 1) не подходит, поскольку он отсутствует в левой таблице ⤵
-43

✖ Поэтому набор (x = 0, y = 1, z = 1) представленный в таблице Python, можно исключить из дальнейшего анализа ⤵

-44

Набор (х = 0, y = 1, z = 1) отсутствует в таблице истинности, приведённой в условии. Поэтому его можно вычеркнуть и исключить из правой таблицы (TABLE FROM PYTHON).

В дальнейшем набор (x = 0, y = 1, z = 1) рассматриваться не будет

Для нахождения недостающих значений ещё раз обратим внимание на первый столбец из таблицы Python ⤵

-45

→ ЛОГИЧЕСКИЕ РАССУЖДЕНИЯ:

  • В правой таблице переменная (х) принимает значения (1) и (1)
  • Значит, и в левой таблице переменная (х) должна принимать значения 1 и 1
  • Значение в пустой ячейке для переменной (х) — это 1
-46

⭐Отлично! На данном этапе удалось определить значение переменной в пустой ячейке. Движемся дальше →

Для нахождения недостающего значения внимательно смотрим столбец (y) из таблицы Python ⤵

-47

→ ЛОГИЧЕСКИЕ РАССУЖДЕНИЯ:

  • В правой таблице переменная (y) принимает значения (0) и (1)
  • Значит, и в левой таблице переменная (y) должна принимать значения 0 и 1
  • Значение в пустой ячейке для переменной (y) — это 1
-48

Ура! 😎 Все переменные найдены и все значения определены!


📍На что стоит обратить внимание:

Для корректной записи ответа необходимо вновь вернуться к I ЭТАПУ (Работа с условием задачи)

  • В каком виде нужно записать ответ?

→ В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы

Следовательно →

Ответ: xzy

😉 Good job! Keep it up! Good luck!

ПРОДОЛЖЕНИЕ СЛЕДУЕТ ...

-49

📌 Полезные материалы для изучения Python ⤵

Всё, что нужно знать о типах данных в Python
МОЙ РЕПЕТИТОР2 февраля 2025
Полный гайд по циклу FOR в Python
МОЙ РЕПЕТИТОР20 сентября 2024