странное поведение диапазона Python - PullRequest
0 голосов
/ 02 октября 2011

Мне нужно проверить переменную, называемую status, объекта в python. То, что я делаю, известно:

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

где p - мой объект. Мне нужно проверить, находится ли этот статус между -21 и -29, но это работает, только если я пишу диапазон в положительных числах вместо отрицательных. Когда я написал:

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

ничего не вернулось. (Конечно, я напечатал статус этого объекта, и я уверен, что это условие существует). Некоторые идеи ???

Спасибо

Ответы [ 2 ]

4 голосов
/ 02 октября 2011

Забудь range. Операторы сравнения в цепочке намного более читабельны.

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

Кстати, аргумент stop range никогда не включается в возвращаемое значение, поэтому для -21 до -29 включительно вы бы хотели range(-29,-20).

0 голосов
/ 21 октября 2012

Вы можете вычесть значение из 0, что приведет к положительному значению в диапазоне:

if 0 - p.status() in range(21,30):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...