web-dev-qa-db-ja.com

pythonの1つのifステートメントに複数の条件を設定する方法

それで私はpython 3.1.5で、何かが起こるために複数の条件が必要なコードを書いています。例:

def example(arg1, arg2, arg3):
    if arg1 == 1:
        if arg2 == 2:
            if arg3 == 3:
                print("Example Text")

問題は、これを行うと、arg2とarg3が0以外の値に等しい場合、何も出力されないことです。ヘルプ?

11
SooBaccaCole

私は使うだろう

def example(arg1, arg2, arg3):
     if arg1 == 1 and arg2 == 2 and arg3 == 3:
          print("Example Text")

and演算子は、同じ名前の論理ゲートと同じです。すべての入力が1の場合にのみ1を返します。論理ゲートが必要な場合は、or演算子を使用することもできます。

編集:実際、あなたの投稿で提供されたコードは私と一緒にうまく機能します。私はそれに関する問題を見ません。これは実際の言語ではなく、Pythonの問題だと思います。

20
SSung2710

ダリアン・ムーディは、この挑戦​​に対する素晴らしい解決策を ブログ投稿 に持っています。

a = 1
b = 2
c = True

rules = [a == 1,
         b == 2,
         c == True]

if all(rules):
    print("Success!")

All()メソッドは、指定されたiterableのすべての要素がtrueの場合、Trueを返します。そうでない場合は、Falseを返します。

littleの詳細については、python docs here および詳細と例で確認できます- ここ

(私もこの情報で同様の質問に答えました- Pythonの1つのif文に複数の条件を設定する方法

5
burkesquires

整数ではなく文字列を渡すと仮定して、引数を整数にキャストしてみてください。

def example(arg1, arg2, arg3):
     if int(arg1) == 1 and int(arg2) == 2 and int(arg3) == 3:
          print("Example Text")

(私は説明を求めていないことを強調するために編集されました;私は私の答えで外交的になろうとしていました。????)

1
Christian Henry

少し奇妙または悪い習慣かもしれませんが、これはそれを行う方法の1つです。

(arg1, arg2, arg3) = (1, 2, 3)

if (arg1 == 1)*(arg2 == 2)*(arg3 == 3):
    print('Example.')

0 == 0で乗算されたもの。これらの条件のいずれかが失敗すると、falseと評価されます。

1
Elyria

私はパーティーに少し遅れていますが、同じタイプの条件がある場合、つまり、すべて、いずれか、またはA_1 = A_2およびB_1 = B_2の所定量をチェックする場合、それを行う方法を共有すると思いました次の方法で行われます。

cond_list_1=["1","2","3"]
cond_list_2=["3","2","1"]
nr_conds=1

if len([True for i, j in Zip(cond_list_1, cond_list_2) if i == j])>=nr_conds:
    print("At least " + str(nr_conds) + " conditions are fullfilled")

if len([True for i, j in Zip(cond_list_1, cond_list_2) if i == j])==len(cond_list_1):
    print("All conditions are fullfilled")

これは、2つの初期リストを変更するだけでよいことを意味します。少なくとも私にとっては、これにより簡単になります。

0
no nein