我正在使用2.3 IDLE而我遇到了问题。
我需要检查一个数字是否在两个其他数字之间,10000和30000之间:
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
效果不佳。
答案 0 :(得分:780)
if 10000 <= number <= 30000:
pass
答案 1 :(得分:56)
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
答案 2 :(得分:43)
您的操作员不正确。应该是if number >= 10000 and number <= 30000:
。此外,Python还有一种简写,if 10000 <= number <= 30000:
。
答案 3 :(得分:21)
您的代码段,
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
实际检查数字是否大于10000和30000。
假设您要检查该数字是否在10000 - 30000范围内,您可以使用Python间隔比较:
if 10000 <= number <= 30000:
print ("you have to pay 5% taxes")
此Python功能将进一步描述in the Python documentation。
答案 4 :(得分:7)
if number >= 10000 and number <= 30000:
print ("you have to pay 5% taxes")
答案 5 :(得分:5)
比较的问题是当你将>=
放在应该有<=
# 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
。
编辑:人们似乎更关心microbench标记和酷链操作。我的答案是关于防御性(针对错误的攻击面)编程。
由于评论中的声明,我在这里为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
答案 6 :(得分:3)
定义数字之间的范围:
r = range(1,10)
然后使用它:
if num in r:
print("All right!")
答案 7 :(得分:1)
假设存在3个非负整数:a
,b
和c
。从数学上讲,如果我们想确定c
是否在a
和b
之间,则可以使用以下公式:
(c-a)*(b-c)> = 0
或在Python中:
> print((c - a) * (b - c) >= 0)
True
答案 8 :(得分:0)
有两种方法比较三个整数并检查 b 是否在 a 和 c 之间:< / p>
if a < b < c:
pass
和
if a < b and b < c:
pass
第一个看起来更具可读性,但第二个运行速度更快。
让我们使用 dis.dis 进行比较:
>>> dis.dis('a < b and b < c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 COMPARE_OP 0 (<)
6 JUMP_IF_FALSE_OR_POP 14
8 LOAD_NAME 1 (b)
10 LOAD_NAME 2 (c)
12 COMPARE_OP 0 (<)
>> 14 RETURN_VALUE
>>> dis.dis('a < b < c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 DUP_TOP
6 ROT_THREE
8 COMPARE_OP 0 (<)
10 JUMP_IF_FALSE_OR_POP 18
12 LOAD_NAME 2 (c)
14 COMPARE_OP 0 (<)
16 RETURN_VALUE
>> 18 ROT_TWO
20 POP_TOP
22 RETURN_VALUE
>>>
并使用 timeit :
~$ python3 -m timeit "1 < 2 and 2 < 3"
10000000 loops, best of 3: 0.0366 usec per loop
~$ python3 -m timeit "1 < 2 < 3"
10000000 loops, best of 3: 0.0396 usec per loop
此外,您可以按照之前的建议使用 range ,但是它要慢得多。
答案 9 :(得分:0)
仅当数字介于10,000和30,000之间时,您才希望输出打印给定语句。
代码应为
if number >= 10000 and number <= 30000:
print("you have to pay 5% taxes")
答案 10 :(得分:-1)
另一种解决方案
def check_if_between_range(current, start, end):
if current == start or end:
return True
elif start < end:
return current in range(start, end)
else:
return current in range(end, start)
答案 11 :(得分:-3)
条件应该是
if number == 10000 and number <= 30000:
print("5% tax payable")
使用number == 10000
的原因是,如果数字的值为50000,而我们使用number >= 10000
,则条件将通过,这不是您想要的。