3 Stimmen

Python if-Anweisung funktioniert nicht wie erwartet

Ich habe derzeit den Code:

fleechance = random.randrange(1,5)
print fleechance
if fleechance == 1 or 2:
    print "You failed to run away!"
elif fleechance == 4 or 3:
    print "You got away safely!"

fleechance wird ständig als 3 oder 4 gedruckt, aber ich erhalte weiterhin das Ergebnis "Du hast es nicht geschafft, wegzulaufen!" Kann mir jemand sagen, warum das so ist?

9voto

Petr Viktorin Punkte 62294

Der Ausdruck fleechance == 1 or 2 ist gleichbedeutend mit (fleechance == 1) or (2) . Die Zahl 2 wird immer als "wahr" angesehen.

Versuchen Sie dies:

if fleechance in (1, 2):

EDIT: In Ihrer Situation (nur 2 Möglichkeiten), wird das Folgende noch besser sein:

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"

3voto

Alex Bliskovsky Punkte 5345

Versuchen Sie

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 4 or fleechance == 3:
    print "You got away safely!"

Wenn dies die einzigen Möglichkeiten sind, können Sie alternativ Folgendes tun

if fleechance <= 2:
    print "You failed to run away!"
else:
    print "You got away safely!"

1voto

Jonathan Callen Punkte 11005

El if Anweisung funktioniert wie vorgesehen, das Problem ist, dass die Reihenfolge der Operationen dazu führt, dass dieser Code etwas anderes tut als das, was Sie wollen.

Die einfachste Lösung wäre, zu sagen:

if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 3 or fleechance == 4:
    print "You got away safely!"

1voto

Ernest Friedman-Hill Punkte 79357

Denn Sie fragen nicht, ob fleechance ist 1 oder fleechance 2 ist; Sie fragen, ob

  1. fleechance 1 ist, oder
  2. 2 ist ungleich Null.

Natürlich ist der zweite Teil der Bedingung immer erfüllt. Versuchen Sie

if fleechance == 1 or fleechance == 2:
    ...

1voto

blotus Punkte 396

Die Art und Weise, wie Sie Ihre if-Anweisungen geschrieben haben, ist falsch. Du sagst Python, dass er prüfen soll, ob fleechance gleich 1 wahr ist oder ob 2 wahr ist. Eine ganze Zahl ungleich Null bedeutet immer wahr in einer Bedingung. Sie sollten schreiben:

fleechance = random.randrange(1,5)
print fleechance
if fleechance == 1 or fleechance == 2:
    print "You failed to run away!"
elif fleechance == 4 or fleechance == 3:
    print "You got away safely!"

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