if
ステートメントは両方とも同じ方法で評価されます。
if something:
do_stuff
something
が True の場合、do_stuff
ブロックは run[1] です。something
True でない場合、do_stuff
ブロックは実行されません。2 つの if ステートメントの違いは、一方が他方と「動作が異なる」ということではなく、異なるバージョンの で実行されることですsomething
。
and
とor
は、真理値を取り、新しい真理値を計算する二項演算です。と同じように1 + 3
、数値を取得して新しい数値を生成する二+
項演算です。2 つの真理値を取得し、新しい値を生成します。そして、数とから異なる数を生成するまたはを持つことができるのと同じように、真理値とから異なる真理値を生成するまたはを持つことができます。1
3
4
a and b
a
b
x + y
x * y
x
y
a and b
a or b
a
b
しかし、if
声明はそれを気にしません。テスト対象の真理値をどのように取得したかを知る必要はありません。どちらの方法でもまったく同じように機能します。and
とor
はまったく別のものであり、真理値を組み合わせて新しい値を取得する方法にすぎません。
and
どのように、どのように機能するかについての直感は、真または偽の可能性があることについて話すときに英語でor
使用するいくつかの方法に基づいています。and
or
「雨が降っている場合、傘を差し上げます」という文の「雨が降っている」の部分は、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 B
True の場合にTrue です( is False で False の場合は False 、それ以外の場合は True)。これを示す表を次に示します。A
B
A
B
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
ステートメントと演算子and
andを含むor
) は、正確な Truth 値ではなく、「真実の」値で動作します。簡単に言えば、0、空のコンテナーと文字列、および特別な値である数値は、真の値を期待する操作にそれらを指定したNone
場合と同様False
に動作し、その他はすべて であるかのように動作しますTrue
。「真実」または「偽り」という用語を使用して、必ずしもそうではないか、True
またはFalse
あたかもそうであるかのように機能している値を説明することがあります。
同様に、 や のような、既存のものから新しい真値を生成する操作は、必ずしもまたはを返すand
とは限りません。上記の表で要求されるように、「真」または「偽」である値を返す場合があります。or
True
False
しかし、これを読んでいる人が真理値を使ったプログラミングを学ぶ初期段階にある場合は、これを無視して、自分は と を操作True
していると考えてくださいFalse
。同様に、「短絡評価」と についても心配しないでください。物事がチェックされる順序(本物True
でありFalse
、関与している場合でも、ほとんどの場合、他の値を使用している場合でも問題ありません)。基本を理解すれば、これらの概念に理解を広げるのは非常に簡単です。