2013-05-12 99 views
4

我有一些if语句的代码,其中一个条件是布尔值。然而,CodeSkulptor说:“第36行:TypeError:BitAnd不支持的操作数类型:'bool'和'number'”。如果可以的话请帮忙。这是这段代码的样子。 (我只是改变了所有的变量名和if语句执行的)在Python中的If语句中使用布尔值

thing1 = True 
thing2 = 3 

if thing2 == 3 & thing1: 
    print "hi" 
+0

使用和代替&。谨慎的一句话,在要评估的表达式中使用括号。如果不这样做,你可以找到意想不到的结果。 – James 2013-05-12 03:53:49

+0

@Imagine:'=='比'和'具有更高的优先级,所以什么都不会发生。 – Blender 2013-05-12 03:56:19

+0

@Blender真的,但要引用python的禅意:显式比隐式更好。我宁愿添加不必要的但明确的括号,而不是依赖于运算符优先级的不完善知识。 – ApproachingDarknessFish 2013-05-12 04:10:01

回答

6

你想使用逻辑and(不是&,这是Python中的位AND运算符):

if thing2 == 3 and thing1: 
    print "hi" 

因为你已经使用&,错误已经弹出,说:

TypeError: unsupported operand type(s) for BitAnd: 'bool' and 'number' 
              ^^^^^^ 
3

&是按位与运算。你想使用逻辑and代替:

if thing2 == 3 and thing1: 
    print "hi"