Доброго времени суток. Приветствую а моём канале 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 #языки программирования