[python] 정수가 다른 두 정수 사이에 있는지 확인

주어진 정수가 다른 두 정수 사이에 있는지 어떻게 알 수 있습니까 (예 :보다 크거나 같고 10000보다 작거나 같습니다 30000)?

2.3 IDLE을 사용하고 있으며 지금까지 시도한 것이 작동하지 않습니다.

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



답변

if 10000 <= number <= 30000:
    pass


답변

>>> 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:합니다. 또한 파이썬에는 이런 종류의 줄임말이 if 10000 <= number <= 30000:있습니다.


답변

코드 스 니펫

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 기능은 Python 설명서에 자세히 설명 되어 있습니다 .


답변

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

파이썬은 당신 이 말로 의미하는 것을 수있게합니다.

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,10)

그런 다음 사용하십시오.

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