所以我最近在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值而不是一个布尔值。所以,我的问题是,为什么第一个程序仍然通过所有测试用例?
答案 0 :(得分:4)
零被视为假值。其他数字被认为是真值:
>>> bool(1)
True
>>> bool(34)
True
>>> bool(0)
False
如果0b1000 & input
设置了位, input
将返回非零值。因此,如果满足该条件,则谓词将被视为真。
有关真值的更准确定义,请参阅Truth Value Testing - Python documentation。