Логические функции в питоне эквивалентность

Логические функции в питоне эквивалентность

Конъю́нкция (от лат. conjunctio — «союз, связь») — логическая операция, по смыслу максимально приближенная к союзу «и»
Наиболее часто в заданиях будет отображаться как » /\ «, реже как » & «.
В питоне мы будем заменять на » and «.

Дизъю́нкция (от лат. disjunctio — «разобщение»), логи́ческое сложе́ние, логи́ческое ИЛИ, включа́ющее ИЛИ; иногда просто ИЛИ — логическая операция, по своему применению максимально приближённая к союзу «или» в смысле «или то, или это, или оба сразу».
Наиболее часто в заданиях будет отображаться как » /\ «, реже как » & «.
В заданиях №2 отображается как » \/ «, иногда » || «.
В питоне мы будем заменять на » or «.

Отрица́ние (инве́рсия, от лат. inversio — переворот, логи́ческое «НЕ») в логике — унарная операция над суждениями, результатом которой является суждение, «противоположное» исходному. Обозначается знаком ¬ перед или чертой — над суждением.
В питоне если перед переменной ¬ или — над суждением ставим переменную в скобки и перед ней ставим » not( ) «.

Имплика́ция (от лат. implicatio «связь; сплетение») — бинарная логическая связка, по своему применению приближенная к союзам «если…, то…».
Импликация записывается как посылка ⇒ следствие; применяются также стрелки другой формы и направленные в другую сторону, но всегда указывающие на следствие.
В коде заменяем на »

Логическая равнозначность или эквиваленция (или эквивале́нтность[1]) — это логическое выражение, которое является истинным тогда, когда оба простых логических выражения имеют одинаковую истинность. Двуместная логическая операция обычно обозначается символом ≡ или ↔.
В питоне обозначаем двумя знаками равно » == «.

Читайте также:  Javascript отнять день от даты

Для всех заданий справедлива одна конструкция решения. Давайте её разберём на примере: Задание взято с сайта «СДАМ ГИА: РЕШУ ЕГЭ»

1. Для начала внимательно посмотрим на таблицу, всего переменных 3 — x, y и z. Также нам надо найти где функция принимает значение 0, то есть ложно.

᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌1) Прописываем print(«x, y, z, w») — для того, чтобы когда мы видели, какая переменная
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌отвечает за какое значение.

᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌2) Задаём каждой переменной значение, которое она может принимать — » 0 » или » 1 »
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ (пишем in range(2) потому, что учитывается интервал от 0 до 2 не включительно, то есть
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌᠌ ᠌можно просто написать в скобках 2, а не in range(0, 2)

᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌3) Записываем условие с помощью » if «, дальше прописываем нашу функцию и значение
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌которое оно принимает:
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌* Если F = 0, то всё условие ставим в скобки и перед ними ставим not -> not(вся
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌функция). Также можно вставить функцию в скобки и написать после неё написать » ==
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌ ᠌False»
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌᠌ ᠌* Иначе F = 1, ничего не делаем с функцией; или ставим её в скобки, а в конце пишем »
᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌ ᠌== True»

᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌ ᠌4) Пишем print(x, y, z, w) и запускаем код, выведенные значения сопоставляем с ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌ ᠌таблицей ᠌и правильно вписываем, строки с таблице не должны повторяться!

print(‘x,y,z,w’)
for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
if (условие в задание) == True/False:
print(x, y, z ,w)

К сожалению, стим убирает отступы, так, что когда копировать будите — отступы делайте, чтобы код работал

Источник

Python. Урок 3: логические выражения и условный оператор

Булевый (логический) тип — это такой тип данных, который имеет только два возможных значения: True (правда) и False (ложь).

Булевый тип применяется когда для результатом выполнения операции являются значения «да» или «нет».
Например, все операции сравнения двух величин (равно, больше, меньше), операции вхождения элемента в множество и проверка на пересечение множеств возвращают в качестве результата булевый тип.

Логические операции и операторы

>>> a = 15 >>> b = 5 >>> f = True # эквивалентность (равенство) (==) >>> a == b False # инверсия (not, !) >>> not f False # сравнение (>, =, !=) >>> a < b False >>> a > b True >>> a >> a != b True # ИЛИ (конъюнкция, логическое сложение) (or, ||) # True, когда хотя бы одна из частей выражения True # a != b (True) or a < b (False) =>True >>> a != b or a < b True # И (дизъюнкция, логическое умножение) (and, &) # True тогда и только тогда, когда все части выражения True # a != b (True) and a < b (False) =>False >>> a != b and a < b False

Условный оператор

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

a = 14 b = 8 # Проверяем какая из переменных содержит большее число # из большего вычитаем меньшее if a > b: c = a - b else: c = b - a print("c = ", c)

После ключевого слова if проверяется условие выполнения кода после двоеточия (тела условия). Если условие при if окажется ложным — выполняется код после else.

В языке Python не используются разделители «;» или фигурные скобки (<>). Их роль выполняют отступы от начала строки (по клавише Tab).
То есть код инструкции if, который должен выполнятся если условие истинно обязательно должен иметь отступ вправо!
Основная программа должна иметь тот же отступ, что и инструкция if.

Источник

Питон и таблицы истинности

Таблица истинности - это таблица, где перечисляются комбинации аргументов некой логической функции и указывается, какие значения принимает эта функция.

В задаче 2 ЕГЭ по информатике требуется 1) уметь строить таблицы истинности логического выражения и 2) уметь сравнивать построенную таблицу истинности с таблицей, приведенной в условии задачи.

Первый пункт можно выполнить на компьютере, написав несложную (менее 10 строк) программу на Питоне.

Вообще говоря, в Питоне, как и в паскале, есть специальные логические значения True и False. Но в логических выражениях можно использовать и числа. При этом значение 0 считается ложью, а всё, отличное от нуля - истиной. (Тут создатель Питона позаимствовал идею из С.)

Рассмотрим задачу с сайта "Решу ЕГЭ". В ней требуется сопоставить переменные, входящие в логическую функцию

Переменная 1 Переменная 2 Переменная 3 Переменная 4 Функция
. . . . F
1 - - 1 0
1 - - - 0
- 1 - 1 0

Требуется выяснить, какая переменная в таблице обозначена как "переменная 1", "переменная 2" и т.д.

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

Так как в Питоне отсутствует логическая операция импликации, заменяем выражения вроде x → y на эквивалентные выражения not x or y. Операция эквивалентности - это сравнение "= ложь":

for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
f = ((not x or y ) and (not y or w)) or (z == ( x or y))
if not f: print(x,y,z,w)

Программа печатает следующую таблицу:

0 1 0 0
1 0 0 0
1 0 0 1
1 1 0 0

Столбцы слева направо - это значения переменных x, y, z, w соответственно.

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

В нашей таблице четыре строки, а в задаче - только три. Следовательно, одна строка в нашей таблице лишняя.

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

Самую первую строку из нашей таблицы удалить нельзя: тогда у нас появляется столбец из трёх единиц, а такого столбца в таблица из задачи нет. Убираем вторую строку и получаем следующую таблицу:

В столбце переменной z - только нули. Следовательно, в задаче переменная 3 - это z.

В столбце переменной w только одна единица. Следовательно, переменная w - это переменная 2 в задаче.

Замечаем, что когда переменная w (переменная 2 в задаче) равна 1, то равна 1 также и переменная x (а в задаче это переменная 4). Следовательно, переменная 4 - это x. Оставшаяся переменная 1 - это переменная y.

Итак, наш ответ - ywzx. Именно такой ответ и приводится в задаче.

При записи логических выражений в Питоне можно столкнуться с тем, что выражения вроде (x ≡ ¬z) при буквальном их переводе (x == not z) вызывают синтаксическую ошибку. Чтобы избежать этого, надо либо заключить выражение not z в дополнительные скобки, т.е. написать (x == (not z)). Можно также заменить операцию "равно" на "не равно", т.е. записать это выражение как (x != z).

Источник

Оцените статью