Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Одной из распространенных задач в программировании является использование логического оператора 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
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
В этом примере функция logical_xor
преобразует оба своих аргумента к булевому типу с помощью функции bool
, а затем сравнивает их с помощью оператора !=
. Это ведет к ожидаемому поведению оператора XOR: функция возвращает истину, если ровно один из аргументов истинен, и ложь в противном случае.
Эта функция может быть использована для проверки, содержит ли только одна из двух строк значение, как показано в примере выше.
Добавить комментарий