それで私はpython 3.1.5で、何かが起こるために複数の条件が必要なコードを書いています。例:
def example(arg1, arg2, arg3):
if arg1 == 1:
if arg2 == 2:
if arg3 == 3:
print("Example Text")
問題は、これを行うと、arg2とarg3が0以外の値に等しい場合、何も出力されないことです。ヘルプ?
私は使うだろう
def example(arg1, arg2, arg3):
if arg1 == 1 and arg2 == 2 and arg3 == 3:
print("Example Text")
and
演算子は、同じ名前の論理ゲートと同じです。すべての入力が1の場合にのみ1を返します。論理ゲートが必要な場合は、or
演算子を使用することもできます。
編集:実際、あなたの投稿で提供されたコードは私と一緒にうまく機能します。私はそれに関する問題を見ません。これは実際の言語ではなく、Pythonの問題だと思います。
ダリアン・ムーディは、この挑戦に対する素晴らしい解決策を ブログ投稿 に持っています。
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文に複数の条件を設定する方法 )
整数ではなく文字列を渡すと仮定して、引数を整数にキャストしてみてください。
def example(arg1, arg2, arg3):
if int(arg1) == 1 and int(arg2) == 2 and int(arg3) == 3:
print("Example Text")
(私は説明を求めていないことを強調するために編集されました;私は私の答えで外交的になろうとしていました。????)
少し奇妙または悪い習慣かもしれませんが、これはそれを行う方法の1つです。
(arg1, arg2, arg3) = (1, 2, 3)
if (arg1 == 1)*(arg2 == 2)*(arg3 == 3):
print('Example.')
0 == 0で乗算されたもの。これらの条件のいずれかが失敗すると、falseと評価されます。
私はパーティーに少し遅れていますが、同じタイプの条件がある場合、つまり、すべて、いずれか、または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つの初期リストを変更するだけでよいことを意味します。少なくとも私にとっては、これにより簡単になります。