我有以下python语句:
if((criteria is not None) AND (2 <= criteria <= 5)):
我正在使用pycharm3,这表明这里存在语法错误。当我将鼠标悬停在线上时,它说:需要冒号。
我做错了什么?
答案 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)):