Python != 给出意想不到的结果
Python != giving unexpected results
我在一个用于快速学习的网站上遇到了一个非常令人困惑的问题 Python。它是关于操作数 != 及其工作原理的。在 3 个操作数之间使用 != 的 result/outcome 让我和我的同学感到困惑。我们试图四处搜索,但找不到任何关于此的 discussion/explanation。请帮忙。
具体请见下文:
True != False != 1
输出:真
True != False != True
输出:真
True is not False is not True
输出:真
逐步分解第一个语句,应首先评估 True!=False 以产生 True。然后再次使用 != 将此 True 与 1 进行比较。 True != 1 应该产生 False。因此,整个语句的计算结果应该为 False!但是却产生了 True 。
逐步分解第二条语句,True!=False 应该产生 True,然后这个 True != True 应该产生 False。该语句的计算结果应为 False !但是却生成了 True 。
第三个语句也是如此。
在 Javascript 和 JAVA 中尝试完全相同的语句都给出了预期的结果 - 错误,这是完全有道理的。 Python 然而,是个例外。
注意:我们知道通过在两个操作数周围加上括号来明确强制操作顺序会给出 "right" 结果(即 False)。我们只是不明白为什么会这样没有括号。
如有任何帮助,我们将不胜感激。
因为a != b != c等价于a != b和b != c
这称为链式比较,您可以在此处找到更多信息:
https://docs.python.org/3/reference/expressions.html
我在一个用于快速学习的网站上遇到了一个非常令人困惑的问题 Python。它是关于操作数 != 及其工作原理的。在 3 个操作数之间使用 != 的 result/outcome 让我和我的同学感到困惑。我们试图四处搜索,但找不到任何关于此的 discussion/explanation。请帮忙。 具体请见下文:
True != False != 1
输出:真
True != False != True
输出:真
True is not False is not True
输出:真
逐步分解第一个语句,应首先评估 True!=False 以产生 True。然后再次使用 != 将此 True 与 1 进行比较。 True != 1 应该产生 False。因此,整个语句的计算结果应该为 False!但是却产生了 True 。
逐步分解第二条语句,True!=False 应该产生 True,然后这个 True != True 应该产生 False。该语句的计算结果应为 False !但是却生成了 True 。
第三个语句也是如此。
在 Javascript 和 JAVA 中尝试完全相同的语句都给出了预期的结果 - 错误,这是完全有道理的。 Python 然而,是个例外。
注意:我们知道通过在两个操作数周围加上括号来明确强制操作顺序会给出 "right" 结果(即 False)。我们只是不明白为什么会这样没有括号。
如有任何帮助,我们将不胜感激。
因为a != b != c等价于a != b和b != c
这称为链式比较,您可以在此处找到更多信息: https://docs.python.org/3/reference/expressions.html