你如何在Python中获得两个变量的逻辑xor?
例如,我有两个我期望成为字符串的变量.我想测试只有其中一个包含True值(不是None或空字符串):
str1 = raw_input("Enter string one:")
str2 = raw_input("Enter string two:")
if logical_xor(str1, str2):
print "ok"
else:
print "bad"
Run Code Online (Sandbox Code Playgroud)
该^运营商似乎是按位,并在所有对象没有定义:
>>> 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'
Run Code Online (Sandbox Code Playgroud) 我找了很短的语法,看起来有点像x *= -1这里x是一个数字,但对于布尔值,如果存在的话。它应该表现得像b = not(b). 当变量名称很长时,感兴趣的是能够在一行中翻转布尔值。
例如,如果您有一个程序可以打开|关闭房子里的灯,您希望避免编写完整的内容:
self.lamps_dict["kitchen"][1] = not self.lamps_dict["kitchen"][1]
Run Code Online (Sandbox Code Playgroud)