4

これが機能しない理由:

            file = "v3a2"
            if "v1" or "v2" in file:
                v1.write(total)
            elif "v3" in file:
                print "never here?????"

これをどのように定式化するのですか?

4

2 に答える 2

10
        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見栄えがよくなります

于 2012-08-15T22:57:22.667 に答える
8

試す

 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:意図したとおりに機能しないことにも注意してください。

上記の演算子の優先順位が見つからなかったため、演算子の優先順位の別の表への直接リンクを次に示します。

于 2012-08-15T22:52:05.267 に答える