Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

С помощью чего можно получить логический xor двух переменных в Python?

ПрограммированиеData science+3
Анонимный вопрос
Data Science
  · 5,0 K
старший разработчик в pseven.io  · 22 июн 2022
В Пайтоне есть оператор побитового XOR, который также отлично работает с логическими значениями, но его поведение легко повторить.
Исключающее "или" ведёт себя как обычное "или" за одним исключением — два True на входе даёт результат False.
Можно так и поступить — возвращать False в этом особом случае, во всех остальных использовать or:
def xor(a, b):
    return False if a and b else a or b

print(xor(True, True))  # False
print(xor(True, False))  # True
print(xor(False, True))  # True
print(xor(False, False))  # False
Однако, если мы внимательно посмотрим на результаты, то окажется, что нам нужно True если значения не равны. Поэтому реализацию XOR можно записать проще:
def xor(a, b):
    return a != b
Что-то осталось непонятно? Спроси в нашей группе в Телеграме!Перейти на t.me/jstsmentor
1 эксперт согласен
По образованию физик, работаю программистом  · 22 июн 2022
Все логические операции можно получить из двух, например, из `not` и `and`. Именно поэтому, во многих языках реализованы лишь несколько операций. 
Формулу можно найти в Википедии в статье "exclusive or".
Если переменные уже приведены к `bool`, то `xor` это то же самое, что не равно, то есть, `!=`.