我正试图用python测试多个值。假设我有
value1 = 7
value2 = 2
value3 = 4
我想知道它们是否小于10。只要有一个值,它就很简单
value1 < 10
结果是True
。看看我是如何在自然语言中使用and
的,我会假设对所有人的测试都是简单的
value1 and value2 and value3 < 10
它确实会导致True
。然而,如果我改变value1 = 20
,上面的仍然是真的,而它显然是False
。因此,除非我在python中发现了一个巨大的bug,否则我显然不了解and
是如何工作的,不幸的是,only docs I can find对我没有多大帮助(在文档中搜索and
真的很难找到任何东西)
(value1 < 10) and (value2 < 10) and (value3 < 10)
工作如预期,但看看它,它应该是相同的我的第一个版本或
(value1 and value2 and value3) < 10
这也给了我一个假True
关于
and
操作符的工作原理已经有了很好的解释,因此我只想添加一个快速解决方案来测试多个数字是否小于另一个数字:这是可行的,因为内置的
max
函数返回给定值的最大数目。它还可以使用列表或元组作为输入:Python
and
运算符有一点您偶然发现的特性:输出:
因此,在Python中
and
直接返回0
,如果第一个表达式的计算结果为0
,则返回第二个表达式强>因此,在您的例子中
val1 and val2 and val3
将返回val3
,因为其他的是non-zero
我很乐意回答你的问题
使用“if”语句时,必须在布尔表达式之间放置“and”,即,如果测试像
if someVariable
这样的语句,并且someVariable
的值不是None
,那么您将始终得到“True”输出,因此,请尝试以下方法:请允许我解释一下为什么当
if (val1 and ...) < 10
不起作用时,这会起作用这是因为,例如表达式
val1 and val2
总是会产生True
,只要两个变量的值都不是None
,所以当您使用表达式val1 and val2 ...
时,您基本上得到的答案是:True < 10
,它产生True
我希望这个答案是有帮助的D
相关问题 更多 >
编程相关推荐