Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python3中,逻辑运算符给出了相反的结果_Python_Python 3.x_If Statement_Logical Operators - Fatal编程技术网

在Python3中,逻辑运算符给出了相反的结果

在Python3中,逻辑运算符给出了相反的结果,python,python-3.x,if-statement,logical-operators,Python,Python 3.x,If Statement,Logical Operators,我在Python3中工作,我创建了一个带有逻辑运算符“&”的If-else语句。得到的结果与实际应该出现的结果相反。作为: a=20 b=30 此条件应打印出else条件,因为第一条语句“a==b”为假语句,第二条语句“a==20”为真。数理逻辑说,当“&”条件下的语句为假时,结果将为假。 奇怪的是,当我将条件“a==b”替换为“b==a”时,结果是正确的 在Python中,&'的优先级高于“==”,因此我们得到了错误的结果 试试这个: if (a==b) & (a==20):

我在Python3中工作,我创建了一个带有逻辑运算符“&”的If-else语句。得到的结果与实际应该出现的结果相反。作为: a=20 b=30

此条件应打印出else条件,因为第一条语句“a==b”为假语句,第二条语句“a==20”为真。数理逻辑说,当“&”条件下的语句为假时,结果将为假。 奇怪的是,当我将条件“a==b”替换为“b==a”时,结果是正确的


在Python中,&'的优先级高于“==”,因此我们得到了错误的结果 试试这个:

if (a==b) & (a==20):
    print "a is equal to b"
else:
    print "a is not equal to b"

在Python中,“&”的优先级高于“==”,因此我们得到了错误的结果 试试这个:

if (a==b) & (a==20):
    print "a is equal to b"
else:
    print "a is not equal to b"

回答你的第一个问题。 Python&运算符将比==运算符先执行(由于优先级更高)

回答你的第二个问题

if a==b & a==20:
当您在内部执行此表达式时,就是这样

if a==(b&a)==20:
if b==(a&a)==20:
表达式(b&a)会给你答案20。 现在的表达式是这样的

if a==(20)==20:  # which is nothing but if a==20 and 20==20:
由于a=20,表达式变为true,执行if部分。 但当你互换了a和be时,这就是实际发生的情况

if a==(b&a)==20:
if b==(a&a)==20:
a&a再给你20英镑。 因此,表达式变为

if b==(20)==20:    # if b==20 and 20==20:

现在b不是20,而是30。所以表达式变为False,否则部分执行。

回答您的第一个问题。 Python&运算符将比==运算符先执行(由于优先级更高)

回答你的第二个问题

if a==b & a==20:
当您在内部执行此表达式时,就是这样

if a==(b&a)==20:
if b==(a&a)==20:
表达式(b&a)会给你答案20。 现在的表达式是这样的

if a==(20)==20:  # which is nothing but if a==20 and 20==20:
由于a=20,表达式变为true,执行if部分。 但当你互换了a和be时,这就是实际发生的情况

if a==(b&a)==20:
if b==(a&a)==20:
a&a再给你20英镑。 因此,表达式变为

if b==(20)==20:    # if b==20 and 20==20:

现在b不是20,而是30。所以表达式变为False,否则部分被执行。

按位and和“logicaluse”和“而不是”&可能的重复之间有区别我没有问“&”和“and”(按位或二进制运算符)之间的区别,但我想知道的是为什么“&”给出这个结果,即使它是二进制运算符。有人,请向我解释一下,当我替换“a”和“b”的值@RahulKumar时,结果是如何变化的,你能把你的问题添加到这个(重要)信息中吗?看看这个问题,看起来您使用的是
&
而不是
。相应地改变问题,我将收回我的接近票。“&”按位and”和“logicaluse”和“而不是”&可能的重复我没有问“&”和“and”(按位或二进制运算符)之间的区别,但我想知道的是为什么“&”给出这个结果,即使它是二进制运算符。有人,请向我解释一下,当我替换“a”和“b”的值@RahulKumar时,结果是如何变化的,你能把你的问题添加到这个(重要)信息中吗?看看这个问题,看起来您使用的是
&
而不是
。相应地改变这个问题,我将收回我的接近票。但是为什么当我把“b==a”放进去时结果会改变呢?如果a==b&a==20,那么第一个计算将是b&a(11110&10100=10100)20。if条件检查a==20==20,因此该条件变为true。如果b==a&a==20,那么第一个动作将是a&a(10100&10100=10100)。如果条件检查b==20==20,那么条件变为false,但是为什么当我输入“b==a”时结果会改变?如果a==b&a==20,那么第一次计算将是b&a(11110&10100=10100)20。if条件检查a==20==20,因此该条件变为true。如果b==a&a==20,那么第一个动作将是a&a(10100&10100=10100)。if条件检查b==20==20,因此该条件变为false