int 如何评估为布尔语句?
How does an int evaluate as a boolean statement?
所以最近在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"
最初的提示要求一个函数来检查第四位是否为 "on"。据我所知,'&' 运算符应该 return 一个 int 值而不是布尔值。那么,我的问题是,为什么第一个程序仍然通过了所有的测试用例?
零被视为虚假值。其他数字视为真值:
>>> bool(1)
True
>>> bool(34)
True
>>> bool(0)
False
如果 input
设置了位,0b1000 & input
将 return 非零值。因此,如果满足该条件,谓词将被视为 true。
有关真值的更精确定义,请参阅 Truth Value Testing - Python documentation。
所以最近在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"
最初的提示要求一个函数来检查第四位是否为 "on"。据我所知,'&' 运算符应该 return 一个 int 值而不是布尔值。那么,我的问题是,为什么第一个程序仍然通过了所有的测试用例?
零被视为虚假值。其他数字视为真值:
>>> bool(1)
True
>>> bool(34)
True
>>> bool(0)
False
如果 input
设置了位,0b1000 & input
将 return 非零值。因此,如果满足该条件,谓词将被视为 true。
有关真值的更精确定义,请参阅 Truth Value Testing - Python documentation。