你好stackoverflow社区:-)
我目前正在学习Python,但我并不完全理解“ True / False”的概念。
在Python中,数字0与“假”相关,数字1与“真”相关。
当我写下面的代码
x = 2
y = 1
if y == True:
print("Y is True")
if x == True:
print("X is True")
else:
print("X is False")
Run Code Online (Sandbox Code Playgroud)
我得到“ Y为真”,因为“ 1”为真。我得到“ X为假”,但我认为这也应该为“ True”,因为存在一个值(x = 2)而不是“ None,0等”。
当我写
if x:
print("X is True")
else:
print("X is False")
Run Code Online (Sandbox Code Playgroud)
然后我得到“ X为True”,因为x不为空,因此为真。
“ if x:”和“ if x == True”之间的确切区别是什么?
glg*_*lgl 13
区别在于if x:检查的真值x。除0以外的所有整数的真值均为true(在本例中为2)。
if x == True:但是,与x的值相比True,这是一种1。比较会2 == 1导致错误的值。
确切地说,有两个相邻的概念:*一个是“真值”,它确定的行为if,while等等。*另一个是True和False,它们分别具有真值“ true”和“ false”,但不一定等于其他真实值。错误值。
如果您确实需要检查的精确值True,并False不管出于什么原因,你可以这样做if x is True或if x is False。这样可以确保y恰好True可以通过测试,如果y 可以通过测试1。
该==运营商不比较它的操作数的感实性,它比较它们的值。
当布尔值在需要的数字,比如他们用数字进行比较时的上下文中使用,他们获得自动转换:True成为1,False变成0。
所以
if some_boolean == some_number:
Run Code Online (Sandbox Code Playgroud)
实际上等效于:
if int(some_boolean) == some_number:
Run Code Online (Sandbox Code Playgroud)
这就是为什么
if True == 2:
Run Code Online (Sandbox Code Playgroud)
不成功。int(True)是1,所以这等效于
if 1 == 2:
Run Code Online (Sandbox Code Playgroud)