ifステートメントは両方とも同じ方法で評価されます。
if something:
do_stuff
somethingが True の場合、do_stuffブロックは run[1] です。somethingTrue でない場合、do_stuffブロックは実行されません。2 つの if ステートメントの違いは、一方が他方と「動作が異なる」ということではなく、異なるバージョンの で実行されることですsomething。
andとorは、真理値を取り、新しい真理値を計算する二項演算です。と同じように1 + 3、数値を取得して新しい数値を生成する二+項演算です。2 つの真理値を取得し、新しい値を生成します。そして、数とから異なる数を生成するまたはを持つことができるのと同じように、真理値とから異なる真理値を生成するまたはを持つことができます。134a and babx + yx * yxya and ba or bab
しかし、if声明はそれを気にしません。テスト対象の真理値をどのように取得したかを知る必要はありません。どちらの方法でもまったく同じように機能します。andとorはまったく別のものであり、真理値を組み合わせて新しい値を取得する方法にすぎません。
andどのように、どのように機能するかについての直感は、真または偽の可能性があることについて話すときに英語でor使用するいくつかの方法に基づいています。andor
「雨が降っている場合、傘を差し上げます」という文の「雨が降っている」の部分は、true または false のいずれかになる条件であり、文の残りの部分は、それが true の場合に何が起こるかを述べています。英語では、「雨が降っていて、歩きたい と 思ったら、傘を差し上げます」とも言えます。これは、「雨が降っている」と「歩きたい」という 2 つの別々の条件が、単語とによって 1 つの条件に結合されています。この文は、「雨が降っている」と「歩きたい」の両方が当てはまる場合、傘を差し上げます。晴れていれば傘はいらないと思いますし、車を運転していれば家と車の間が濡れても構わないと思います。
「雨が降ってい たり 、歩きたいと思ったら、傘を持ってきます」とも言えます。この文は、条件のいずれかまたは両方が真の場合、傘を差し上げますという意味です。ここで推測できるのは、雨が降っている場合は、歩く気がなくても後で傘を持ちたいということであり、歩きたいと思ったら、散歩中に雨が降った場合に備えて傘を持ちたいということです。今は雨が降っていなくても。
andプログラミングとandor演算子の真理値を理解する最善の方法は、この自然な英語の理解andとor心に留めておくことです。andこれにより、とを含む単純な式を直感的に理解することができますor。しかし、プログラミングでは方法andと動作が形式化されているため、通常の英語の使用におけるあいまいさや特殊なケースに関係なく、それらがどのように動作するかを正確にor書き留めることができます。
A and Bが True で True の場合Aは True B、それ以外の場合は False (Aまたは またはが False の場合Bは False)。is は、 orがA or BTrue の場合にTrue です( is False で False の場合は False 、それ以外の場合は True)。これを示す表を次に示します。ABAB
A | B | A and B
------+-------+---------
True | True | True
True | False | False
False | True | False
False | False | False
A | B | A or B
------+-------+--------
True | True | True
True | False | True
False | True | True
False | False | False
[1] 実際、話はこれよりも少し複雑です (私の回答全体に当てはまります)。Python のほとんどのブール演算 (ifステートメントと演算子andandを含むor) は、正確な Truth 値ではなく、「真実の」値で動作します。簡単に言えば、0、空のコンテナーと文字列、および特別な値である数値は、真の値を期待する操作にそれらを指定したNone場合と同様Falseに動作し、その他はすべて であるかのように動作しますTrue。「真実」または「偽り」という用語を使用して、必ずしもそうではないか、TrueまたはFalseあたかもそうであるかのように機能している値を説明することがあります。
同様に、 や のような、既存のものから新しい真値を生成する操作は、必ずしもまたはを返すandとは限りません。上記の表で要求されるように、「真」または「偽」である値を返す場合があります。orTrueFalse
しかし、これを読んでいる人が真理値を使ったプログラミングを学ぶ初期段階にある場合は、これを無視して、自分は と を操作Trueしていると考えてくださいFalse。同様に、「短絡評価」と についても心配しないでください。物事がチェックされる順序(本物TrueでありFalse、関与している場合でも、ほとんどの場合、他の値を使用している場合でも問題ありません)。基本を理解すれば、これらの概念に理解を広げるのは非常に簡単です。