2016-09-28 8 views
-2

ケース3で77が返されるのはなぜですか?それはboolの声明ではない? case1と2はFalseを返すことに注意してください。ケース2とケース3の違いは何ですか?私の質問は、他のユーザからの質問の正確な複製であることをKasramvdさんのコメント@についてPython bool文

7 >= 77 and 77 
Out[313]: False 

7 >= 77 and 7 
Out[314]: False 

7 >= 7 and 77 
Out[315]: 77 

7 >= 8 and 77 
Out[318]: False 

おかげ

(下記参照)

それは、全く私には初心者明らかにされていません、その私の質問は以下と同じです。エキスパートは、同じ回答が両方に適用されることを容易に確認できます。答えを読んだ後、私はリンクを参照してください。答えを得る前に、私が知ることができなかった方法。

私はプログラミングの初心者です。スタックオーバーフローに参加したのは初めてのことです。そして、これはstackoverflowに関する私の最初の質問でした。 stackoverflowは初心者にはやさしくないようです。より多くの質問をしてくれてありがとう。ありがとう。


他のユーザーの質問は

は、私は他の誰かのプロジェクトからこのコードを理解しようとしています。コンテキストが必要な場合はhttps://github.com/newsapps/beeswithmachineguns/blob/master/beeswithmachineguns/bees.py#L501

IS_PY2はPythonのメジャーバージョンが2の場合はTrue、空でない文字列はTrueであることがわかりますが、何らかの理由でopenmodeを理解できませんTrueまたはFalseではなく、 'w'または 'wt'のいずれかが割り当てられます。

openmode = IS_PY2 and 'w' or 'wt' 
openkwargs = IS_PY2 and {} or {'encoding': 'utf-8', 'newline': ''} 
+0

それはそう単純ではないのです。http://stackoverflow.com/questions/36550588/assigning-string-with-boolean-expression/36551857#36551857 –

+0

あなたがから –

+0

@HuyNguyen誰もブロック@Kasramvd明確化のために元の質問の編集を参照してくださいより多くの質問をする。これは、このコミュニティが管理するのが最良の方法です。そして、初心者を始めにする前に、[documentation first](http://stackoverflow.com/help/how-to-ask)を読んでください。 – Kasramvd

答えて

0

これは事実とそのand短絡を行う必要があり、その代わりにTrueまたはFalseのtruthy値を返します。で

7 >= 77 and 7 

7> = 77 Falseに相当するので、andの第二オペランドが評価されることはないので、Falseなります。で

7 >= 7 and 77 

7は、7(明らかに)に等しいので、andの第2オペランドが評価されます。 77は真実であるため、返されたものです。

0

私はpythonのandの仕組みがこのように動作すると信じています。

andとstatementの条件は、順番に評価されます。虚偽のものが見つかった場合、これはそのまま返されます。それ以外の場合は、と条件の最後のものが返されます。

Pythonでは、事はブール変数でなくても真実か偽であるという概念を持っています。したがって、とはちょうど虚偽である最初のもの、または最後の状態を返します。この場合、77を再チューニングしています。これを条件付きにすると、77が真実であるため、Trueとして扱われます。EXのために

、あなたが

7>=7 and False and 77 # ===> False 
7>=7 and 0 and 77 # ===> 0 
7>=7 and [] and 77 # ===> [] 

を行うのであれば、あなたはそれはそれが見る最初falsyものを返すか、最後のものを返し、それは必ずしもTrue/Falseの戻りません参照してください。

関連する問題