首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对Python中的打印(10==10==True)和打印(10==10和True)有混淆。

我对Python中的打印(10==10==True)和打印(10==10和True)有混淆。
EN

Stack Overflow用户
提问于 2022-06-27 05:19:50
回答 4查看 79关注 0票数 1
代码语言:javascript
复制
print(2==2==True)

给出了结果:False

所以我的问题是它为什么不给出真实的答案呢?

其中as:

代码语言:javascript
复制
print(2==2 and True)

给出了结果:True

有人能给出满意的答案吗?

EN

回答 4

Stack Overflow用户

发布于 2022-06-27 05:25:31

当你这样做时:

代码语言:javascript
复制
print(a == b == c)

您正在检查abc的值是否相同。由于2不等于True,所以语句为false,并且

代码语言:javascript
复制
print(2 == 2 == True)

将是False

然而,当你这样做时:

代码语言:javascript
复制
print(2 == 2 and True)

您正在检查如果2 == 2True都具有True的布尔值,那么您将打印出True,或者是False。因为2等于2,所以表达式2 == 2True。因此,True and TrueTrue,所以输出将是True

如果你有进一步的问题或澄清,请告诉我!

票数 3
EN

Stack Overflow用户

发布于 2022-06-27 05:33:25

来自python文档:

比较: 比较可以任意链接,例如,x < y <= z等价于x < y and y <= z,但y只计算一次(但在这两种情况下,当发现x < y为false时,z根本不计算)。 形式上,如果abc,…,yz是表达式,op1op2,…,opN是比较运算符,那么a op1 b op2 c ... y opN za op1 b and b op2 c and ... y opN z等价,只不过每个表达式最多只能计算一次。

在第一个例子中,

代码语言:javascript
复制
print(2 == 2 == True) # This is in the form `a op b op c`

等于2 == 2 and 2 == True。那就是True and False

在第二个例子中,由于and不是比较运算符,所以不会有链接。

代码语言:javascript
复制
print(2 == 2 and True)

等于2 == 2 and True,即True and True

如果您想先强制计算表达式,然后将表达式放入()中。

代码语言:javascript
复制
print((2 == 2) == True)
print((2 == 2) and True)
票数 1
EN

Stack Overflow用户

发布于 2022-06-27 05:55:21

在第一种情况下,2==2==True测试三个条件,如下所示。

  1. 2==2 => True
  2. 2==True => False
  3. True==2 => False (不需要检查,因为如果前2满足了,那么这个也是正确的)

在第二种情况下,`2==2和True‘您正在测试两个条件,类似于。

  1. 2==2 => True
  2. True and True => True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72767283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档