← Все вопросы

Задание 2 КЕГЭ: как построить таблицу истинности перебором на Python?

Задан 11 месяцев назад639 просмотров3 ответа
17

В задании 2 дают логическую функцию и кусок таблицы истинности с перепутанными столбцами. Руками строить долго и легко ошибиться. Можно ли просто перебрать все наборы переменных кодом и вывести готовую таблицу?

3 ответа

31
✓ Принятый ответ — помог автору

Перебирай наборы через itertools.product([0,1], repeat=n) и для каждого считай функцию.

from itertools import product

def f(x, y, z, w):
    return (x <= y) and (z == w) or x  # пример выражения

for x, y, z, w in product([0, 1], repeat=4):
    if f(x, y, z, w) == 1:        # печатаем только строки с F=1
        print(x, y, z, w)

Главный приём задания 2 — печатать только строки, где функция истинна (их обычно мало). Потом сопоставляешь их с фрагментом таблицы из условия и определяешь, какая колонка какой переменной соответствует. Импликацию A→B записывай как x <= y (для 0/1 это эквивалентно), а эквивалентность A≡B — как x == y.

Анастасия Гусева Главное не перепутать: импликация ложна ТОЛЬКО на 1→0 · 10 месяцев назад
Kay Altos Про `x <= y` для импликации — золото, постоянно забываю · 10 месяцев назад
8

itertools.product([0,1], repeat=n).

6

Только не пиши импликацию как x or not y по памяти — проще not x or y либо x <= y. На паре 1,0 сразу видно: 1<=0 это False, как и должно быть у импликации.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект