关于python:如何检查数字是否在两个数字之间?

How do I check whether an int is between the two numbers?

我用的是2.3空闲,而且我有问题。

我需要检查一个数字是否在另外两个数字之间,10000到30000:

1
2
if number >= 10000 and number >= 30000:
    print ("you have to pay 5% taxes")

它工作得不太好。


1
2
if 10000 <= number <= 30000:
    pass


1
2
3
4
5
6
7
8
9
10
11
12
13
14
r=range(1,4)

>>> 1 in r
True
>>> 2 in r
True
>>> 3 in r
True
>>> 4 in r
False
>>> 5 in r
False
>>> 0 in r
False


你的接线员不正确。应该是if number >= 10000 and number <= 30000:。另外,python有一个这种东西的缩写,if 10000 <= number <= 30000:


你的代码段,

1
2
if number >= 10000 and number >= 30000:
    print ("you have to pay 5% taxes")

实际检查数字是否大于10000和30000。

假设要检查数字是否在10000-30000范围内,可以使用python间隔比较:

1
2
if 10000 <= number <= 30000:
    print ("you have to pay 5% taxes")

这个python特性在python文档中有进一步的描述。


1
2
if number >= 10000 and number <= 30000:
    print ("you have to pay 5% taxes")

比较的问题在于,当您将>=放在应该有<=的地方时,它们可能很难调试。

1
2
3
#                             v---------- should be <
if number >= 10000 and number >= 30000:
    print ("you have to pay 5% taxes")

python让你用文字来表达你的意思

1
if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)

在python3中,需要使用range而不是xrange

编辑:人们似乎更关心微生物标记以及链接操作有多酷。我的答案是关于防御性(减少bug的攻击面)编程。

由于评论中的声明,我在这里添加了python3.5.2的微基准。

1
2
3
4
$ python3.5 -m timeit"5 in range(10000, 30000)"
1000000 loops, best of 3: 0.266 usec per loop
$ python3.5 -m timeit"10000 <= 5 < 30000"
10000000 loops, best of 3: 0.0327 usec per loop

如果您担心性能,可以计算一次范围

1
2
$ python3.5 -m timeit -s"R=range(10000, 30000)""5 in R"
10000000 loops, best of 3: 0.0551 usec per loop


定义数字之间的范围:

1
r = range(1,10)

然后使用它:

1
2
if num in r:
    print("All right!")