¿Cómo verifico si un int está entre los dos números?

Estoy usando 2.3 IDLE y estoy teniendo problemas.

Necesito verificar si un número está entre otros dos números, 10000 y 30000:

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

No está funcionando muy bien.

 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 

Su operador es incorrecto. Debería ser if number >= 10000 and number <= 30000: Además, Python tiene una taquigrafía para este tipo de cosas, if 10000 <= number <= 30000:

Su fragmento de código,

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

en realidad comprueba si el número es mayor que 10000 y 30000.

Suponiendo que desea comprobar que el número está en el rango de 10000 a 30000, puede usar la comparación de intervalos de Python:

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

Esta característica de Python se describe con más detalle en la documentación de Python .

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

El problema con las comparaciones es que pueden ser difíciles de depurar cuando colocas un >= donde debería haber un <=

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

Python te permite escribir lo que quieres decir con palabras

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

En Python3, necesitas usar el range lugar de xrange .

Edición: la gente parece estar más preocupada por las marcas de microbench y por cómo enfrían las operaciones de encadenamiento. Mi respuesta es sobre la progtwigción defensiva (menos superficie de ataque para errores).

Como resultado de una reclamación en los comentarios, he agregado el micro benchmark aquí para 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 

Si le preocupa el rendimiento, puede calcular el rango una vez

 $ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R" 10000000 loops, best of 3: 0.0551 usec per loop 

Define el rango entre los números:

 r = range(1,10) 

Entonces úsalo:

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