Найти тему
programmer's notes (python and more)

О логических выражениях в условных конструкциях языка Python. Приложение к уроку 3

Доброго времени суток. Приветствую а моём канале programmer's notes.

Данные заметки это приложение к уроку 3.

Урок этот, как вы, наверное, помните, был посвящен условным конструкциям, а именно условиям, состоящим из нескольких более простых условий, связанных логическими операциями: and, or. Также в таких выражениях используется отрицание not.

Ну, во-первых, хотел бы остановиться на том, как реализовать в условии исключающее или. В некоторых языках оно называется xor. Посмотрим как можно реализовать xor в Python.

Путь есть два условия x < 10 и x % 2 == 0. Нужно сформировать условие, так чтобы выражение давало бы истину, только если одно и только одно из выражений было бы истинно.

Конечно, это можно реализовать с помощью вложенных условных конструкций. Примерно так

Однако это несколько громоздко.

Поэтому можно так

(x < 10) and not(x % 2 == 0) or not(x < 10) and (x % 2 == 0)

или преобразуя

(x < 10) and (x % 2 != 0) or (x <= 10) and (x % 2 == 0)

Но это еще не все. Можно воспользоваться оператором ^.

(x < 10) ^ (x % 2 == 0)

Конечно, оператор не логический, а битовый, однако он сработает правильно. А битовых операторах речь будет впереди.

Хотелось бы также остановиться на операторе not. Пример того, как можно "снять" оператор уже был. Ясно, что not(x < 0) равносильно x >= 0. Но выражения могут быть более сложными. Часто программисты вообще не снимают not - все работает и ладно. Но все таки приведем пример

not(x < 10 or x > 20 or x % 2 == 0) ⇔ (x >= 10 and x <= 20 and x%2 != 0)

На самом деле результат можно получить и не зная формул логики.

Надо иметь в виду, что операция and имеет приоритет в отношении операции or. Ну как умножение в отношении сложения. К последнему мы, конечно, будем еще возвращаться.

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

А вот в этом примере скобки указывают, что операция or должна быть первой по отношению к операции and.

((x > a) or (x < b)) and (b - a) % x == 0

Мы неоднократно еще будем обращаться к выражениям и логическим и арифметическим. Это та область, где часто встречаются ошибки.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Программирование это творческий процесс. У вас появятся свои собственные творения и вы станете творцом
Программирование это творческий процесс. У вас появятся свои собственные творения и вы станете творцом

#программирование #программисты #python #языки программирования