小能豆

在 Python 中如何获取两个变量的逻辑异或?

python

在 Python 中如何获取两个变量的逻辑异或?

例如,我有两个变量,我希望它们是字符串。我想测试其中只有一个包含 True 值(不是 None 或空字符串):

str1 = raw_input("Enter string one:")
str2 = raw_input("Enter string two:")
if logical_xor(str1, str2):
    print "ok"
else:
    print "bad"

^运算符是按位的,并且并非在所有对象上都定义:

>>> 1 ^ 1
0
>>> 2 ^ 1
3
>>> "abc" ^ ""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ^: 'str' and 'str'

阅读 55

收藏
2024-09-02

共1个答案

小能豆

要在 Python 中计算两个变量的逻辑异或,可以使用表达式来检查其中一个变量是否为真,而另一个变量是否为假。在 Python 中,可以使用类型bool和逻辑运算符的组合来完成此操作。

定义logical_xor函数的方法如下:

def logical_xor(val1, val2):
    # Convert both values to boolean and check if exactly one is True
    return bool(val1) != bool(val2)

str1 = input("Enter string one:")  # Use input() in Python 3.x
str2 = input("Enter string two:")

if logical_xor(str1, str2):
    print("ok")
else:
    print("bad")

解释:

  1. bool(val1)并将和bool(val2)转换val1val2它们的布尔等价物(True如果值不是None或为空字符串,False否则)。
  2. 运算!=符检查一个是否是True,另一个是否是False,有效地执行 XOR 运算。

示例输出

  • 如果str1 = "abc"str2 = ""logical_xor(str1, str2)将返回True并打印ok
  • 如果两者都非空或两者都为空,logical_xor(str1, str2)则返回False并打印bad
2024-09-02