我是Python的新手,所以我真的需要这个问题的帮助。我尝试了很多次,但却无法得到它。任何建议,将不胜感激。感谢
def xor(a,b):
return (a and not b) or (not a and b)
编写一个以字典形式返回xor真值表的函数。您应该在下面的函数中使用xor()
def xorTruthTable():
return {}
输出应该是这样的:
"和"的真值表字典形式是
{(False, False) : False, \
(False, True) : False, \
(True, False) : False, \
(True, True) : True}
答案 0 :(得分:1)
您可以使用嵌套循环执行此操作。我们将遍历a
的所有可能值(在本例中为False
和True
),对于每个值,我们将再次循环遍历{的所有可能值{1}}。无论我们在内部循环中编写什么代码,都会针对b
和a
的每种可能组合运行。
我们会跟踪表格(b
或dict
)以保存这些值。对于{}
和a
的每个组合,我们会将元组b
添加为键,(a, b)
作为该键的值。然后我们就可以返回字典了。
xor(a, b)
答案 1 :(得分:1)
这是一个简洁的解决方案,使用itertools.product
生成四个可能的输入对和字典理解来从中创建字典。 operator.xor
是一个库函数,恰好与xor
函数
{(i, j): operator.xor(i, j) for i, j in itertools.product((False, True), repeat=2)}
# Output:
# {(False, False): False, (False, True): True, (True, False): True, (True, True): False}
答案 2 :(得分:0)
使用Python的^
运算符的单行解决方案:
{(a,b): a^b for a in (True,False) for b in (True,False)}
如果您想使用xor()
:
{(a,b): xor(a,b) for a in (True,False) for b in (True,False)}
要么评估
{(False, True): True, (True, False): True, (False, False): False, (True, True): False}