【发布时间】:2020-08-07 16:13:29
【问题描述】:
我正试图在 python 中测试多个值。假设我有
value1 = 7
value2 = 2
value3 = 4
我想知道它们是否小于 10。只有一个值,显然就像
value1 < 10
导致True。看看我如何在自然语言中使用and,我会假设对所有人进行测试很简单
value1 and value2 and value3 < 10
它确实导致True。但是,如果我更改value1 = 20,上面仍然是正确的,虽然它显然是False。因此,除非我在 python 中发现了一个巨大的错误,否则我显然不明白and 是如何工作的,不幸的是,only docs I can find 对我没有多大帮助(在文档中很难找到任何东西,搜索@987654331 @...)。
(value1 < 10) and (value2 < 10) and (value3 < 10)
按预期工作,但看看它,它应该与我的第一个版本相同或
(value1 and value2 and value3) < 10
这也给了我一个错误的True。
【问题讨论】:
-
最后一次尝试 (
(value1 and value2 and value3) < 10) 给出了错误的 True,因为如果整数不为零,则该整数为真。因此,括号内的陈述为真。 True 小于 10。因此,Python 返回True是正确的。使用max([value1,value2,value3])<10查看是否所有值都小于10。如果最大的小于10,则都小于10。 -
and运算符接受两个布尔值并将它们组合起来。所以像(20 and 10) < 15这样的东西没什么意义。解析为(True and True) < 15,然后解析为True < 15,后者也解析为True