2017-11-23 6 views
0

以下は '&'と 'and'条件演算子とその結果を使って試した異なるシナリオです。 '&' 演算子使用"and"と "&"のためのpython条件演算子の奇妙な振る舞い

  1. を(Pythonの2.7を使用して):

enter image description here

を使用
    1. 'と' オペレータ:

    enter image description here

    なぜboth coさまざまな振る舞いを示すnditional演算子? 実際のシナリオの説明が参考になります。

    ありがとうございます。

  • +2

    *テキスト*をテキストとして投稿してください – Sayse

    +0

    [質問するときにSOのコードをアップロードしないのはなぜですか?](http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-of-code-on-so-ask-a-question) –

    +0

    https://stackoverflow.com/questions/36550588/assigning-string-with-boolean-expression –

    答えて

    0

    と両方の式が論理的に真であるかどうかをテストします(真/偽の値で使用される場合)。

    +0

    も参照してください。 > 0 真 –

    5

    &は、ではありません。それはthe bitwise andの略です。異なる演算子であるだけでなく、the operator precedenceも異なっています(and>未満ですが、&は上記です)。

    すべての例のだから、最初:今すぐ演算子の優先順位キック

    >>> point = 1 
    >>> score = 2 
    >>> point == 1 & score > 0 
    

    と最後の行が

    >>> point == (1 & score) > 0 
    
    と同等です:

    >>> 1 and 2 
    2 
    >>> 1 & 2 
    0 
    

    今すぐあなたのケースを分析することができます

    ==>の優先順位は同等です。だからを評価することができます:

    >>> 1 & score 
    0 
    >>> point == 0 > 0 
    

    最後の行は(point == 0) > 0と同等です(演算子は同じ優先順位を持っている場合、あなたは、単に左から右へ)。

    >>> point == 0 
    False 
    >>> False > 0 
    False 
    

    すべてがすべて

    >>> point == 1 & score > 0 
    False 
    

    にあなたが今、あなたの第二文の評価を打破することができます:evaulateをすることができますか?

    +0

    >>>ポイント= 1 >>>スコア= 2 >>>ポイント== 1 真 >>>スコアはあなたは答えを詳しく説明していただけます。 (point == 1&(score> 0))=> trueを返します。 –

    +1

    @PrashantkumarKB私は答えを更新しました。あなたが何をしようとしているのか分かりませんが、ビットを操作しない限り、 '&'は使わないでください。 – freakish

    0

    &は、bitwiseのAND演算子です。一方、andは、論理演算子です。

    1

    問題は、&は実際には論理 "and"ではなく、bitwise operatorです。したがって、各ビットで2つの数値を比較し、最初の2つの数値の両方にそのビットが設定されている場合は、ビットが設定された数値を生成します。だから1 & 2はあなたに0を与えるでしょう。

    これは通常は問題ではないでしょう(真が1、偽は0) - &ためoperator precedenceand相対的に>=が異なることを除いて。

    ので1 == 1 & 2 > 0(最初のケースは):

    • これは1 == (1 & 2) > 0、または1 == 0 > 0として解釈され、そして1 == 0がFalseであるため、全体のことはFalseです。 1 == 1 and 2 > 0一方

    (第2ケース):

    • これは(1 == 1) and (2 > 0)と解釈され、そしてこれらの場合の両方に該当するので、全部がTrueです。
    +0

    あなたは絶対に正しいです、私は私の答えを修正しました。 – bouteillebleu

    関連する問題