and
はよりも精度が高いor
ため、and
sが最初に評価され、次に、が評価さor
れます。つまり、テキストで説明したロジックは、コードで説明したロジックではありません。
or
最初のケースを単一のケースとして扱いたい場合は、その周りに角かっこを使用します。
if (len(content_tags) >= 1 or tags_irrelevant == 'yes')\
and lengthproblem == 0\
and guess_language.guessLanguage(testlanguage) == 'en'\
and len(sentences) >= 3:
とは言うものの、あなたはこれからあなたが望む論理的な振る舞いの詳細な説明を私たちに与えていないので、私は座ってそれを適切に解決することを提案します。
ロジックをテストする必要がある場合は、何がいつ評価されるかがわかるように、印刷する簡単なテスト関数を使用します。
>>> def test(bool):
... print(bool)
... return bool
...
>>> if test(1) or test(2) and test(3) and test(4) and test(False):
... print("Success")
...
1
Success
>>> if (test(1) or test(2)) and test(3) and test(4) and test(False):
... print("Success")
...
1
3
4
False
最初に評価されたものが最初のものであることがはっきりとわかりますand
。次に、の左側を評価しようとし、and
を取得しor
ます。これを評価しようとしTrue
、最初の値を取得するため、短絡True
して、に戻りますand
。これも短絡して戻りTrue
ます(実際には、1ですがTrue
、この例では)。角かっこがある場合は、希望どおりに評価されます。