これが機能しない理由:
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
これをどのように定式化するのですか?
これが機能しない理由:
file = "v3a2"
if "v1" or "v2" in file:
v1.write(total)
elif "v3" in file:
print "never here?????"
これをどのように定式化するのですか?
if "v1" or "v2" in file:
と同等です
if ("v1") or ("v2" in file):
True
これは常にbool("v1")==True
あなたは言えた
if any(x in file for x in ["v1", "v2"]):
また
if "v1" in file or "v2" in file:
チェックする項目が 2 つまたは 3 つ以上ある場合は、 のバージョンの方がany
見栄えがよくなります
試す
if "v1" in file or "v2" in file:
それ以外の
if "v1" or "v2" in file:
おそらく、Python Boolean Operationsのレビューが役立つかもしれません。概要のそのページの下部には、演算子の優先順位の表もあります。表を参照すると、in
演算子は演算子よりも優先順位が高いor
ため、式は次のように解釈されることがわかります。
if ("v1") or ("v2" in file):
あなたが期待/意図したものではなく。
また、@ sepp2k が以下の有益なコメントで言及しているようor
に、 よりも優先順位が高い場合in
、式が として終了し、if ("v1" or "v2") in file:
意図したとおりに機能しないことにも注意してください。
上記の演算子の優先順位が見つからなかったため、演算子の優先順位の別の表への直接リンクを次に示します。