我如何确定一个给定的整数是否在另外两个整数之间(例如大于/等于10000和小于/等于30000)?

到目前为止,我的尝试并没有奏效:

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

当前回答

我添加了一个没有人提到的解决方案,使用symphony库中的Interval类:

from sympy import Interval

lower_value, higher_value = 10000, 30000
number = 20000

 # to decide whether your interval shhould be open or closed use left_open and right_open 
interval = Interval(lower_value, higher_value, left_open=False, right_open=False)
if interval.contains(number):
    print("you have to pay 5% taxes")

其他回答

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

你的接线员不正确。如果数字>= 10000并且数字<= 30000:则应该是。此外,Python对这类事情有一个简写,如果10000 <= number <= 30000:。

比较的问题是,当您在应该是<=的地方放置了>=时,它们可能很难调试

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

Python允许你用文字表达你的意思

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

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

编辑:人们似乎更关心微基准标记和如何酷链操作。我的答案是关于防御性编程(减少漏洞的攻击面)。

由于评论中的说法,我在这里添加了Python3.5.2的微基准测试

$ 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

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

$ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R"
10000000 loops, best of 3: 0.0551 usec per loop
>>> 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 10000 <= number <= 30000:
    pass

详情请参见文档。