El problema con las comparaciones es que pueden ser difíciles de depurar cuando pones un lugar >=
donde debería haber un<=
# v---------- should be <
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Python te permite simplemente escribir lo que quieres decir con palabras
if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)
En Python3, debe usar en range
lugar de xrange
.
editar: Las personas parecen estar más preocupadas por las marcas de microbench y lo geniales que son las operaciones de encadenamiento. Mi respuesta es sobre la programación defensiva (menos superficie de ataque para errores).
Como resultado de un reclamo 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