Python中的链式比较数字范围

时间:2013-11-12 16:42:17

标签: python comparison chained

我有以下功能:

def InRange(number):
    return 5 <= number >= 1

如果使用链式比较,如果数字不在1到5的范围内,我希望这个说错,但似乎无法做到这一点。

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

你想要这样:

def InRange(number):
    return 1 <= number <= 5

请注意,您也可以这样做:

def InRange(number):
    return 0 < number < 6

答案 1 :(得分:4)

使用此:

1 <= number <= 5

来自docs

  

x < y <= z相当于x < yy <= z,但y除外   仅评估一次(但在两种情况下z都没有评估   发现x < y是假的。)

您的(不正确)表达式实际上等同于:

number >=5 and number >= 1

因此,对于1到无穷大之间的任何数字,它都是True

答案 2 :(得分:1)

或者你可以这样做(根据函数的名称似乎合适):<​​/ p>

def InRange(number):
    return number in range(1, 6)

对于大数字,您应该使用:

def InRange(number):
    return number in xrange(1, 10000000)