python条件运算符中的奇怪行为;及;及&&引用;

python条件运算符中的奇怪行为;及;及&&引用;,python,python-2.7,Python,Python 2.7,下面是使用“&”和“and”条件运算符尝试的不同场景及其结果。(使用Python 2.7) 使用“&”运算符: 使用“and”运算符: 想知道为什么两个条件运算符表现出不同的行为? 用真实场景进行解释会很有帮助 提前感谢。和测试两个表达式在逻辑上是否都是真的,而&(当与真/假值一起使用时)测试两个表达式是否都是真的。和测试两个表达式在逻辑上是否都是真的,而&(当与真/假值一起使用时)测试两个表达式是否都是真的。不是条件运算符。它代表。它不仅是不同的运算符,而且也是不同的(和在>下面,而&在上

下面是使用“&”和“and”条件运算符尝试的不同场景及其结果。(使用Python 2.7)

  • 使用“&”运算符:
  • 使用“and”运算符:
  • 想知道为什么两个条件运算符表现出不同的行为? 用真实场景进行解释会很有帮助


    提前感谢。

    和测试两个表达式在逻辑上是否都是真的,而&(当与真/假值一起使用时)测试两个表达式是否都是真的。

    和测试两个表达式在逻辑上是否都是真的,而&(当与真/假值一起使用时)测试两个表达式是否都是真的。

    不是条件运算符。它代表。它不仅是不同的运算符,而且也是不同的(
    >
    下面,而
    &
    在上面)

    首先,举个例子:

    >>> 1 and 2
    2
    >>> 1 & 2
    0
    
    现在让我们分析您的案例:

    >>> point = 1
    >>> score = 2
    >>> point == 1 & score > 0
    
    现在运算符优先级开始生效,最后一行与

    >>> point == (1 & score) > 0
    
    请注意,
    =
    具有同等的优先级。让我们来评估一下:

    >>> 1 & score
    0
    >>> point == 0 > 0
    
    最后一行相当于
    (point==0)>0
    (当运算符具有相同的优先级时,您只需从左向右移动)。让我们评估一下:

    >>> point == 0
    False
    >>> False > 0
    False
    
    总而言之

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

    您现在可以分解第二个语句的求值吗?

    &
    不是条件运算符。它代表。它不仅是不同的运算符,而且也是不同的(
    >
    下面,而
    &
    在上面)

    首先,举个例子:

    >>> 1 and 2
    2
    >>> 1 & 2
    0
    
    现在让我们分析您的案例:

    >>> point = 1
    >>> score = 2
    >>> point == 1 & score > 0
    
    现在运算符优先级开始生效,最后一行与

    >>> point == (1 & score) > 0
    
    请注意,
    =
    具有同等的优先级。让我们来评估一下:

    >>> 1 & score
    0
    >>> point == 0 > 0
    
    最后一行相当于
    (point==0)>0
    (当运算符具有相同的优先级时,您只需从左向右移动)。让我们评估一下:

    >>> point == 0
    False
    >>> False > 0
    False
    
    总而言之

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

    你现在可以为你的第二个语句分解计算吗?

    &
    是一个AND运算符,而
    是一个逻辑运算符。

    &
    是一个AND运算符,而
    是一个逻辑运算符。

    问题是
    实际上不是一个逻辑“AND”,而是一个逻辑运算符。因此,它将按每一位比较两个数字,如果前两个数字都有一个位集,则生成一个有一个位集的数字。因此
    1和2
    将为您提供0

    这通常不是问题(True为1,False为0)-除了for&和
    相对于
    =
    是不同的

    因此
    1==1&2>0
    (第一种情况):

    • 这被解释为
      1==(1&2)>0
      ,或者
      1==0>0
      ,因为
      1==0
      是假的,所以整个事情都是假的
    1==1和2>0
    (第二种情况):

    • 这被解释为
      (1==1)和(2>0)
      ,因为这两种情况都是正确的,所以整个情况都是正确的

      • 问题在于
        &
        实际上不是逻辑上的“and”,而是一个。因此,它将按每一位比较两个数字,如果前两个数字都有一个位集,则生成一个有一个位集的数字。因此
        1和2
        将为您提供0

        这通常不是问题(True为1,False为0)-除了for&和
        相对于
        =
        是不同的

        因此
        1==1&2>0
        (第一种情况):

        • 这被解释为
          1==(1&2)>0
          ,或者
          1==0>0
          ,因为
          1==0
          是假的,所以整个事情都是假的
        1==1和2>0
        (第二种情况):

        • 这被解释为
          (1==1)和(2>0)
          ,因为这两种情况都是正确的,所以整个情况都是正确的

        请以文本的形式发布文本请参见另见请以文本的形式发布文本请参见另见您完全正确,我已更正了我的答案。您完全正确,我已更正了我的答案。请详细说明答案。如果我们喜欢(分数==1&(分数>0))=>返回true。@PrashantkumarKB我已经更新了答案。我不知道你想做什么,但除非你要操作位,否则不要使用
        &
        。你能详细说明答案吗。如果我们喜欢(分数==1&(分数>0))=>返回true。@PrashantkumarKB我已经更新了答案。我不确定你想做什么,但除非你打算操作位,否则不要使用
        &
        >>点=1>>>分数=2>>点==1真>>>分数>0真>>点=1>>>分数=2>>点==1真>>分数>0真