具有多个变量的Python IF条件

时间:2016-03-30 21:28:39

标签: python if-statement

有人可以澄清这一点。如果我尝试编写此代码会发生什么:

if tomato = 1 or tomato = 2 or tomato = 3

...像这样:

if tomato = 1 or 2 or 3 

我知道Python并不认为它是一样的,但它认为我在做什么?

最重要的是,如果我有一大堆番茄条件,最好的方法是什么。每次写“番茄=”似乎都不是很整洁。

2 个答案:

答案 0 :(得分:2)

Python没有想到任何事情。它认识到语法有问题并抛出SyntaxError

要一次只检查多个值,您可以使用in运算符:

if tomato in (1, 12, 25, 76, 84):
    pass

另请注意,您必须使用两个等号(==)来检查是否相等。

答案 1 :(得分:0)

如果您一直使用双等号,执行将如下所示:Python开始从左到右评估if语句的谓词。如果tomato的值为1,则第一部分的计算结果为True,Python解释器继续评估if块内的连续行(称为short-circuit evaluation)。

但是,如果tomato的值不是1,则解释器继续评估谓词中的下一部分,即值2的整数。除零之外的所有整数值,求值为True。这导致谓词的下一部分评估为True,并且解释器继续执行if块的内容。因此,您的谓词为tautology,无论True具有什么值,始终都会评估为tomato

正如pp_所指出的,你应该使用双等号进行相等比较 - 否则该语句被认为是赋值,而在Python中,赋值语句没有真值,所以解释器会抛出{ {1}}。