【问题标题】:What is the difference between "if x == True" and "if x:" [duplicate]“如果 x == True”和“如果 x:”有什么区别 [重复]
【发布时间】:2019-09-19 07:52:26
【问题描述】:

你好 stackoverflow 社区 :-)

我目前正在学习 Python,但我并不完全理解“真/假”的概念。

在 Python 中,数字 0 与“False”相关联,1 与“True”相关联。

当我编写以下代码时

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 是假的”,但我认为这也应该是“真”,因为有一个值 (x = 2) 而不是“无、0 等”。

当我写作时

if x:
    print("X is True")
else:
    print("X is False")

然后我得到“X 为真”,因为 x 不是空的,因此是真实的。

“if x:”和“if x == True”之间的确切区别是什么?

【问题讨论】:

  • 你确定你的缩进正确吗? Python 非常关心正确的缩进!
  • Matthias,不要使用这个代码。你必须在 if 语句后缩进!
  • 我编辑了你的格式,因为这不是你观察到的行为的原因。

标签: python


【解决方案1】:

不同的是if x:检查x的真值。除 0 以外的所有整数的真值都为真(本例中为 2)。

然而,if x == True:xTrue 的值进行比较,这是1 的一种。比较 2 == 1 会得到一个错误值。

确切地说,有两个相邻的概念: * 一个是“真值”,它决定了ifwhile等的行为。 * 另一个是值TrueFalse,它们具有各自的真值“真”和“假”,但不一定等于其他真值。错误值。

如果您出于某种原因绝对需要检查TrueFalse 的确切值,您可以使用if x is Trueif x is False 来执行此操作。这确保了如果 y 正好是 True 将通过测试,如果它是 1,则不会。

【讨论】:

  • 您能否补充一下,使用if .. is boolean 比使用if .. == boolean 更可取?
【解决方案2】:

== 运算符不比较其操作数的真实性,而是比较它们的值。

在需要数字的上下文中使用布尔值时,例如将它们与数字进行比较时,它们会自动转换:True 变为 1False 变为 0

所以

if some_boolean == some_number:

实际上等同于:

if int(some_boolean) == some_number:

这就是为什么

if True == 2:

没有成功。 int(True)1,所以这相当于

if 1 == 2:

【讨论】:

    【解决方案3】:

    看待问题的等效方法:

    "if x" <==> "if bool(x)"
    

    因为你的 x 是一个整数:

    "if x" <==> "if x != 0"
    

    "if x == True"  <==> "if x == 1"
    

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多