Hello 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")
我得到“ Y为真”,因为“ 1”为真。我得到“ X为假”,但我认为这也应该为“ True”,因为有一个值(x = 2)而不是“无,0等”。
我写的时候
if x:
print("X is True")
else:
print("X is False")
然后我得到“ X为True”,因为x不为空,因此为真。
“ if x:”和“ if x == True”之间的确切区别是什么?
答案 0 :(得分: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
不会通过。
答案 1 :(得分:6)
==
运算符不比较其操作数的真实性,而是比较其值。
在需要数字的上下文中使用布尔值时(例如,将它们与数字进行比较时),它们会自动转换:True
变成1
,False
变成{{1} }。
所以
0
实际上等效于:
if some_boolean == some_number:
这就是为什么
if int(some_boolean) == some_number:
不成功。 if True == 2:
是int(True)
,所以等价于
1
答案 2 :(得分:2)
解决问题的等效方法:
"if x" <==> "if bool(x)"
因为您的x是整数:
"if x" <==> "if x != 0"
和
"if x == True" <==> "if x == 1"