Диапазон цепочек сравнительных чисел в Python
У меня есть следующая функция:
def InRange(number):
return 5 <= number >= 1
Я хочу, чтобы это говорило false, если число не находится в диапазоне от 1 до 5 с использованием сравнения цепочек, но, похоже, не может понять это правильно.
Какие-либо предложения?
3 ответа
Решение
Вы хотите это так:
def InRange(number):
return 1 <= number <= 5
Обратите внимание, что вы также можете сделать:
def InRange(number):
return 0 < number < 6
Использовать этот:
1 <= number <= 5
Из документов:
x < y <= z
эквивалентноx < y
а такжеy <= z
, Кроме этогоy
оценивается только один раз (но в обоих случаяхz
не оценивается вообще, когдаx < y
оказывается ложным).
Ваше (неправильное) выражение фактически эквивалентно:
number >=5 and number >= 1
Итак, это будет True
для любого числа от 1 до бесконечности:
В качестве альтернативы вы можете сделать (это показалось уместным в зависимости от имени функции):
def InRange(number):
return number in range(1, 6)
Для больших чисел вы должны использовать:
def InRange(number):
return number in xrange(1, 10000000)