Il problema con i confronti è che possono essere difficili da eseguire il debug quando si inserisce un punto >=dove dovrebbe esserci un<=
# v---------- should be <
if number >= 10000 and number >= 30000:
print ("you have to pay 5% taxes")
Python ti lascia semplicemente scrivere ciò che vuoi dire a parole
if number in xrange(10000, 30001): # ok you have to remember 30000 + 1 here :)
In Python3, devi usare rangeinvece di xrange.
modifica: le persone sembrano essere più interessate ai segni del microbench e alle fantastiche operazioni di concatenamento. La mia risposta riguarda la programmazione difensiva (meno superficie di attacco per i bug).
Come risultato di un'affermazione nei commenti, ho aggiunto il micro benchmark qui per 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
Se sei preoccupato per le prestazioni, puoi calcolare l'intervallo una volta
$ python3.5 -m timeit -s "R=range(10000, 30000)" "5 in R"
10000000 loops, best of 3: 0.0551 usec per loop