2012-09-08 22 views
8

複数の条件からトリガーするためにifステートメントを取得しようとしていますが、ステートメントを別のトリガーで複数回書き直す必要はありません。例:if/elifステートメントを使用した複数の条件

if user_input == "look": 
    print description 


if user_input == "look around": 
    print description 

これらを1つのステートメントに凝縮しますか?

私は 'or'を使用しようとしましたが、入力がいずれかの条件に一致するかどうかにかかわらず、raw_inputがまったくステートメントをトリガーする原因となりました。

if user_input in ("look", "look around"): 
    print description 

あなたが2.7を使用しているので、あなたも書くことができる:あなたは多くの可能性を持っている場合

if user_input == "look" or "look around": 
    print description 

答えて

11

何をしようとしていること

if user_input == "look" or user_input == "look around": 
    print description 

別のオプションですそれは(2.7または3+で動作し、2.6またはそれ以下では動作しません)このようです:

if user_input in {"look", "look around"}: 
    print description 

あなたの要素のsetを作成します。これは検索に非常にわずかですが(チェックしている要素の数が2よりもはるかに大きい場合にのみ重要です)。


あなたの最初の試みがこれで終わった理由はこれです。 PythonのほとんどのものはTrueFalseNone、空の文字列、リスト、dicts ...以外)に評価されます。 orは2つのものを取り、ブール値として評価します。したがってuser_input == "look" or "look around"(user_input == "look") or "look_around"のように扱われます。最初のものが偽であれば、それは常にあなたがif "look_around":を書いたようなものです。

+0

ありがとうございます!本当に愚かな質問! – Blaine

+0

@Blaineこれは、多くの新しいプログラマーがPythonで動作する問題です。それはあなたがしたいことをやっているように見えますが、そうではありません。 :)うまくいけば、なぜそれがそれのように動作するの私の説明は意味をなさない。 – Dougal

+0

ああそれはそれを説明します。私の論理テーブルを学んでいるので、私はあなたを得る! :) – Blaine

2

彼らは オプションのセクションを持つパターンに従うか、あなたは、配列の検索を行うことができれば、あなたは、文字列にマッチする正規表現を使用できます。

if user_input in ["look", "look around"]: 
    print description 

をブール演算子orだけブール値を扱う、それが評価され式 を両側に入力し、いずれかの式がTrueと評価された場合はTrueを返します。 自然言語とは関係ありません。 '

関連する問題