在 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'
要在 Python 中计算两个变量的逻辑异或,可以使用表达式来检查其中一个变量是否为真,而另一个变量是否为假。在 Python 中,可以使用类型bool和逻辑运算符的组合来完成此操作。
bool
定义logical_xor函数的方法如下:
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")
bool(val1)
bool(val2)
val1
val2
True
None
False
!=
str1 = "abc"
str2 = ""
logical_xor(str1, str2)
ok
bad