Ich versuche, eine if-Anweisung zu erhalten, die aus mehr als einer Bedingung ausgelöst wird, ohne die Anweisung mehrmals mit verschiedenen Triggern umzuschreiben. z.B.:
%Vor%Wie würden Sie diese zu einer Aussage zusammenfassen?
Ich habe versucht, 'oder' zu verwenden, und es verursachte überhaupt einen raw_input, um die Anweisung auszulösen, unabhängig davon, ob die Eingabe mit einer der Bedingungen übereinstimmte.
%Vor%Was Sie versuchen, ist
%Vor%Eine weitere Option, wenn Sie viele Möglichkeiten haben:
%Vor%Da Sie 2.7 verwenden, könnten Sie es auch so schreiben (das funktioniert in 2.7 oder 3+, aber nicht in 2.6 oder darunter):
%Vor% Dies macht eine set
Ihrer Elemente, die ein wenig schneller zu durchsuchen ist ( Das ist jedoch nur wichtig, wenn die Anzahl der zu überprüfenden Elemente viel größer ist als 2).
Der Grund, warum dein erster Versuch immer durchgegangen ist, ist dies. Die meisten Dinge in Python beziehen sich auf True
(außer False
, None
oder leere Strings, Listen, dicts, ...). or
benötigt zwei Dinge und wertet sie als boolesche Werte aus. So wird user_input == "look" or "look around"
wie (user_input == "look") or "look_around"
behandelt; Wenn der erste falsch ist, ist es so, als ob du if "look_around":
geschrieben hast, was immer passieren wird.
Sie können reguläre Ausdrücke verwenden, um die Zeichenfolgen zu vergleichen, wenn sie einem Muster mit folgen optionale Abschnitte oder Sie könnten eine Array-Suche durchführen:
%Vor% Der boolesche Operator or
arbeitet nur mit booleschen Werten, er wertet die Ausdrücke aus
auf beiden Seiten und gibt True
zurück, wenn einer der Ausdrücke zu True
ausgewertet wird.
Es hat nichts mit der natürlichen Sprache zu tun '
Tags und Links python python-2.7 if-statement