使用Python的布尔真值表

时间:2017-03-09 04:27:54

标签: python

我是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}

3 个答案:

答案 0 :(得分:1)

您可以使用嵌套循环执行此操作。我们将遍历a的所有可能值(在本例中为FalseTrue),对于每个值,我们将再次循环遍历{的所有可能值{1}}。无论我们在内部循环中编写什么代码,都会针对ba的每种可能组合运行。

我们会跟踪表格(bdict)以保存这些值。对于{}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}
相关问题