int如何作为布尔语句进行求值?

时间:2015-11-20 03:58:34

标签: python bit-manipulation bitwise-operators

所以我最近在Codecademy上学习Python,我不小心提交了这个

    def check_bit4(input):
        if 0b1000 & input:
            return "on"
        else:
            return "off"

作为我的代码应该是这个(省略了if语句中的“> 0”)。出于某种原因,上面的代码仍然通过了所有给定的测试用例。

    def check_bit4(input):
        if 0b1000 & input > 0:
            return "on"
        else:
            return "off"

原始提示要求提供一个函数,用于检查第四位是否“打开”。据我所知,'&' operator应该返回一个int值而不是一个布尔值。所以,我的问题是,为什么第一个程序仍然通过所有测试用例?

1 个答案:

答案 0 :(得分:4)

零被视为假值。其他数字被认为是真值:

>>> bool(1)
True
>>> bool(34)
True
>>> bool(0)
False
如果0b1000 & input设置了位,

input将返回非零值。因此,如果满足该条件,则谓词将被视为真。

有关真值的更准确定义,请参阅Truth Value Testing - Python documentation