我如何确定一个给定的整数是否在另外两个整数之间(例如大于/等于10000和小于/等于30000)?
到目前为止,我的尝试并没有奏效:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
我如何确定一个给定的整数是否在另外两个整数之间(例如大于/等于10000和小于/等于30000)?
到目前为止,我的尝试并没有奏效:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
当前回答
你的代码片段,
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
实际上检查number是否大于10000和30000。
假设你想检查数字是否在10000 - 30000范围内,你可以使用Python的间隔比较:
if 10000 <= number <= 30000:
print ("you have to pay 5% taxes")
这个Python特性在Python文档中有进一步的描述。
其他回答
试试这个简单的函数;它检查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)是一样的。
你的接线员不正确。如果数字>= 10000并且数字<= 30000:则应该是。此外,Python对这类事情有一个简写,如果10000 <= number <= 30000:。
当且仅当数值落在10,000到30,000之间时,希望输出输出打印给定语句。
代码应该是;
if number >= 10000 and number <= 30000:
print("you have to pay 5% taxes")
比较的问题是,当您在应该是<=的地方放置了>=时,它们可能很难调试
# 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
条件应该是,
if number == 10000 and number <= 30000:
print("5% tax payable")
使用number == 10000的原因是,如果number的值是50000,如果我们使用number >= 10000,条件就会通过,这不是你想要的。