如何在Python中获得两个变量的logical xor?
例如,我有两个变量,我希望它们是字符串。我想测试其中只有一个包含真值(不是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'
您始终可以使用xor的定义从其他逻辑操作计算它:
但这对我来说有点太冗长了,乍一看也不是特别清楚。另一种方法是:
两个布尔上的xor运算符是逻辑xor(与int上的不同,后者是按位的)。这是有意义的,因为^{} is just a subclass of ^{} ,但是实现时只有值
0
和1
。当域被限制在0
和1
时,逻辑异或等价于按位异或。因此
logical_xor
函数的实现方式如下:记入Nick Coghlan on the Python-3000 mailing list。
如果您已经将输入规范化为布尔型,那么!=是异或。
位异或已内置到Python的^{} 模块中(与
^
运算符相同):相关问题 更多 >
编程相关推荐