Python 理解逻辑语句

Python 理解逻辑语句,python,boolean,Python,Boolean,在最近的一次测试中,我有一个问题: 有两个狼,a和b,参数a_howl和b_howl 指示每个人是否在嚎叫。如果他们都是,我们就有麻烦了 嚎叫或者如果他们两个都没有嚎叫。如果我们在中,则返回True 麻烦 狼群的麻烦(真的,真的)→ 真的 wolf_麻烦(假,假)→ 真的 wolf_麻烦(对,错)→ 假的 我的代码如下所示,在提交之前,我测试了它在所有三种条件下都能工作 def wolf_trouble(a_howl, b_howl): if a_howl == True & b

在最近的一次测试中,我有一个问题:

有两个狼,a和b,参数a_howl和b_howl 指示每个人是否在嚎叫。如果他们都是,我们就有麻烦了 嚎叫或者如果他们两个都没有嚎叫。如果我们在中,则返回True 麻烦

狼群的麻烦(真的,真的)→ 真的

wolf_麻烦(假,假)→ 真的

wolf_麻烦(对,错)→ 假的

我的代码如下所示,在提交之前,我测试了它在所有三种条件下都能工作

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)返回True,我试图理解为什么。既然我已经将所有非(True,True)或(False,False)的条件设置为返回False,为什么我会看到这个结果


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

&
按位and运算符。相反,您应该使用
,这是逻辑and运算符。注意,顺便说一句,只要检查
a_howl
b_howl
是否相等,您就可以大大简化此函数:

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

注意:
&
是Python中的一个位运算符。你应该使用
。非常相关:如果a_howl和b_howl相等,我们就有麻烦了。否则我们就不是了。所以:
返回a_howl==b_howl
谢谢!我想我养成了使用“&”的习惯,因为我不得不在熊猫图书馆里使用它。