Диапазон цепочек сравнительных чисел в 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)
Другие вопросы по тегам