如何确定value1、value2和value3是否小于value4?

2024-04-28 00:41:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用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


Tags: and文档falsetruedocsonlyfindcan
3条回答

关于and操作符的工作原理已经有了很好的解释,因此我只想添加一个快速解决方案来测试多个数字是否小于另一个数字:

if max(value1, value2, value3) < value4:
    print("True")

这是可行的,因为内置的max函数返回给定值的最大数目。它还可以使用列表或元组作为输入:

number = [value1, value2, value3]
if max(numbers) < value4:
    print("True")

Python and运算符有一点您偶然发现的特性:

val = 5
print(1 and val)
print(2 and val)
print(0 and val)
print(-1 and val)
print(-2 and val)

输出:

5
5
0
5
5

因此,在Python中and直接返回0,如果第一个表达式的计算结果为0,则返回第二个表达式

因此,在您的例子中val1 and val2 and val3将返回val3,因为其他的是non-zero

我很乐意回答你的问题

使用“if”语句时,必须在布尔表达式之间放置“and”,即,如果测试像if someVariable这样的语句,并且someVariable的值不是None,那么您将始终得到“True”输出,因此,请尝试以下方法:

if val1 < 10 and val2<10 and val3<10:
    <code body>

请允许我解释一下为什么当if (val1 and ...) < 10不起作用时,这会起作用

这是因为,例如表达式val1 and val2总是会产生True,只要两个变量的值都不是None,所以当您使用表达式val1 and val2 ...时,您基本上得到的答案是:True < 10,它产生True

我希望这个答案是有帮助的D

相关问题 更多 >