07 Июл 2023
2 мин
8640

Логический XOR в Python

Одной из распространенных задач в программировании является использование логического оператора XOR. Оператор XOR, или «исключающее или», работает

Содержание

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

У этого оператора много применений, однако в Python прямой поддержки для него нет. Вместо этого, Python предоставляет оператор ^ для выполнения операции XOR на битовом уровне, что ведет к неожиданным результатам при попытке его использовать как логический оператор.

Например, можно попытаться применить этот оператор к двум строкам, ожидая, что он будет работать как логический XOR. Однако Python не поддерживает эту операцию для строк.

str1 = 'hello'
str2 = ''
res = str1 ^ str2  # Ошибка TypeError: unsupported operand type(s) for ^: 'str' and 'str'

Вместо этого, можно реализовать логический XOR через другие логические операторы, такие как and и or.

def logical_xor(str1, str2):
    return bool(str1) != bool(str2)

str1 = 'hello'
str2 = ''
print(logical_xor(str1, str2))  # Выводит True

В этом примере функция logical_xor преобразует оба своих аргумента к булевому типу с помощью функции bool, а затем сравнивает их с помощью оператора !=. Это ведет к ожидаемому поведению оператора XOR: функция возвращает истину, если ровно один из аргументов истинен, и ложь в противном случае.

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

Содержание

Добавить комментарий

Определи профессию по рисунку