680 Stimmen

Bestimmen, ob eine ganze Zahl zwischen zwei anderen ganzen Zahlen liegt

Wie kann ich feststellen, ob eine bestimmte ganze Zahl zwischen zwei anderen ganzen Zahlen liegt (z. B. größer/gleich 10000 und weniger als/gleich 30000 )?

15voto

joandiar91 Punkte 149

Definieren Sie den Bereich zwischen den Zahlen:

r = range(1,10)

Dann benutzen Sie es:

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

14voto

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

13voto

Vikrant Gupta Punkte 197

Nachfolgend sind einige mögliche Wege aufgeführt, geordnet von der besten bis zur schlechtesten Leistung (d. h. der erste wird am besten funktionieren)

     # Old school check
     if 10000 <= b and b <=30000:
        print ("you have to pay 5% taxes")
     # Python range check
     if 10000 <= number <= 30000:
        print ("you have to pay 5% taxes")
     # As suggested by others but only works for integers and is slow
     if number in range(10000,30001):
        print ("you have to pay 5% taxes")

11voto

John La Rooy Punkte 278961

Mit Python können Sie einfach schreiben. was Sie mit Worten meinen:

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

In Python3, verwenden Sie range anstelle von xrange .

edit: Die Leute scheinen sich mehr Gedanken über Mikrobankmarken zu machen und darüber, wie cool die Verkettung von Operationen ist. Meine Antwort ist über defensive (weniger Angriffsfläche für Bugs) Programmierung.

Aufgrund einer Forderung in den Kommentaren habe ich hier den Micro-Benchmark für Python3.5.2 hinzugefügt

$ 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

Wenn Sie sich Sorgen um die Leistung machen, können Sie den Bereich einmal berechnen

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

9voto

Lars Blumberg Punkte 16435

Während 10 <= number <= 20 in Python funktioniert, finde ich diese Notation mit range() besser lesbar:

if number in range(10, 21):
    print("number is between 10 (inclusive) and 21 (exclusive)")
else:
    print("outside of range!")

Beachten Sie, dass der 2., obere Schrankenparameter nicht im Bereichssatz enthalten ist, wie mit überprüft werden kann:

>>> list(range(10, 21))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Bevorzugen Sie jedoch die range() nur dann, wenn es nicht auf einem leistungskritischen Pfad läuft. Ein einziger Aufruf ist für die meisten Anforderungen immer noch schnell genug, aber wenn er 10.000.000 Mal ausgeführt wird, stellt man eindeutig eine fast dreimal langsamere Leistung im Vergleich zu a <= x < b :

> { time python3 -c "for i in range(10000000): x = 50 in range(1, 100)"; } 2>&1 | sed -n 's/^.*cpu \(.*\) total$/\1/p'
1.848

> { time python3 -c "for i in range(10000000): x = 1 <= 50 < 100"; } 2>&1 | sed -n 's/^.*cpu \(.*\) total$/\1/p'
0.630

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X