'和' vs'和'在python多条件if语句

时间:2014-05-03 14:19:17

标签: python

我有以下python语句:

 if((criteria is not None) AND (2 <= criteria <= 5)):

我正在使用pycharm3,这表明这里存在语法错误。当我将鼠标悬停在线上时,它说:需要冒号。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

Python使用and,而非AND;你不需要几乎所有的括号(因为and的{​​{3}}非常低):

if criteria is not None and 2 <= criteria <= 5:

拼写AND时,它会被视为变量名称,使表达式无效。

您可以将测试简化为:

if criteria and 2 <= criteria <= 5:

None无论如何都是假的0不适合该范围。

在Python 2中,None可以直接与数字进行比较(总是更小),if 2 <= criteria <= 5:可以做到,但是明确地与Python 3兼容并没有什么坏处。

演示:

>>> for criteria in (None, 0, 3, 5, 10):
...     if criteria and 2 <= criteria <= 5:
...         print(criteria, 'is valid')
...     else:
...         print(criteria, 'does not match')
... 
None does not match
0 does not match
3 is valid
5 is valid
10 does not match

答案 1 :(得分:3)

没有AND这样的东西,它应该是and

if((criteria is not None) and (2 <= criteria <= 5)):