了解逻辑语句

时间:2017-01-17 15:52:19

标签: python boolean

我最近的测试中有这个问题:

  

有两只狼,a和b,以及参数a_howl和b_howl   表明每个人是否嚎叫。如果两者兼而有之,我们就会遇到麻烦   嚎叫,或者他们俩都没有嚎叫。如果我们进来,则返回True   麻烦。

     

wolf_trouble(True,True)→True

     

wolf_trouble(False,False)→True

     

wolf_trouble(True,False)→False

我的代码如下所示,在提交之前,我测试过它在所有三个条件下都有效。

def wolf_trouble(a_howl, b_howl):
    if a_howl == True & b_howl == True:
        return True
    elif a_howl == False & b_howl == False:
        return True
    else:
        return False

然而,有一个额外的测试条件没有被提及,因此,我只获得了部分功劳。 :

  

wolf_trouble(False,True)→False

当我运行我的代码时,wolf_trouble(False,True)返回True,我试图理解为什么。由于我设置了所有不是(True,True)或(False,False)的条件以返回False,为什么我看到这个结果?

除了对每个可能的排列进行硬编码之外,我可以采取哪些步骤以便我的代码能够处理这些条件?

1 个答案:

答案 0 :(得分:4)

& 按位和运算符。相反,您应该使用and,这是逻辑和运算符。请注意,顺便说一句,您只需检查a_howlb_howl是否相等就可以大大简化此功能:

def wolf_trouble(a_howl, b_howl):
    return a_howl == b_howl