3

我有以下功能:

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

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

有什么建议么?

4

3 回答 3

7

你想要这样:

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

请注意,您还可以执行以下操作:

def InRange(number):
    return 0 < number < 6
于 2013-11-12T16:43:30.443 回答
6

用这个:

1 <= number <= 5

来自文档

x < y <= z等价于x < yand y <= z,除了y只评估一次(但在这两种情况下,当发现为假z时根本不评估 )。x < y

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

number >=5 and number >= 1

因此,它将是True1 到无穷大之间的任何数字:

于 2013-11-12T16:43:16.747 回答
1

或者,您可以这样做(根据函数的名称,这似乎很合适):

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

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

def InRange(number):
    return number in xrange(1, 10000000)
于 2013-11-12T16:44:46.347 回答