Mehrere Bedingungen mit if / elif-Anweisungen [duplizieren]

8

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%     
Blaine 08.09.2012, 23:44
quelle

2 Antworten

12

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.

    
Dougal 08.09.2012, 23:51
quelle
2

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 '

    
nemo 08.09.2012 23:52
quelle

Tags und Links