python范围奇怪的行为

时间:2011-10-02 17:24:02

标签: python range

我需要在python中检查一个对象的变量,称为status。我所做的就是众所周知的:

if p.status() in range(21,30):

其中p是我的对象。我需要检查这个状态是否介于-21和-29之间,但只有当我用正数而不是负数写入范围时它才有效。我写的时候:

if p.status() in range(-30,-21):

它没有返回任何东西。 (当然我打印了这个对象的状态,我确信这个条件存在)。一些想法???

由于

2 个答案:

答案 0 :(得分:4)

忘记range。链式比较运算符更具可读性。

if -29 <= p.status() <= -21:

顺便说一句,stop的{​​{1}}参数永远不会包含在返回值中,因此对于-21到-29 inlusive,你需要range

答案 1 :(得分:0)

您可以从0中减去该值,该值将产生一个正值,该值将在以下范围内:

if 0 - p.status() in range(21,30):