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

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

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

当前回答

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

其他回答

虽然10 <= number <= 20适用于Python,但我发现使用range()的表示法更具可读性:

if number in range(10, 21):
    print("number is between 10 (inclusive) and 21 (exclusive)")
else:
    print("outside of range!")

请记住,第二个上限参数不包括在范围设置中,可以通过以下方法验证:

>>> list(range(10, 21))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

但是,只有当range()方法没有运行在某些性能关键路径上时才使用它。对于大多数需求来说,单个调用仍然足够快,但如果运行10,000,000次,我们清楚地注意到与A <= x < b相比,性能要慢近3倍:

> { time python3 -c "for i in range(10000000): x = 50 in range(1, 100)"; } 2>&1 | sed -n 's/^.*cpu \(.*\) total$/\1/p'
1.848

> { time python3 -c "for i in range(10000000): x = 1 <= 50 < 100"; } 2>&1 | sed -n 's/^.*cpu \(.*\) total$/\1/p'
0.630

条件应该是,

if number == 10000 and number <= 30000:
     print("5% tax payable")

使用number == 10000的原因是,如果number的值是50000,如果我们使用number >= 10000,条件就会通过,这不是你想要的。

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

试试这个简单的函数;它检查A是否在B和C之间(B和C的顺序可能不对):

def isBetween(A, B, C):
    Mi = min(B, C)
    Ma = max(B, C)
    return Mi <= A <= Ma

所以isBetween(2, 10, -1)和isBetween(2, -1, 10)是一样的。

>>> 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