Python 中的运算符优先级是指在表达式中不同运算符的执行顺序。其中涉及到 "in" 和比较运算符。

33 浏览
0 Comments

Python 中的运算符优先级是指在表达式中不同运算符的执行顺序。其中涉及到 "in" 和比较运算符。

以下比较会得到True:\n

>>> '1' in '11'
True
>>> ('1' in '11') == True
True

\n如果将括号反过来,会出现TypeError错误:\n

>>> '1' in ('11' == True)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: argument of type 'bool' is not iterable

\n那么如何在没有括号的情况下得到False呢?\n

>>> '1' in '11' == True
False

0
0 Comments

在Python中,运算符的优先级决定了表达式中运算符的执行顺序。在Python中,比较运算符的优先级高于成员运算符。这可能导致在使用成员运算符"in"和比较运算符"=="时出现问题。

让我们来看一个示例:

>>> '1' in '11' == True
True

根据运算符的优先级,表达式被解析为`('1' in '11') and ('11' == True)`。首先,进行成员运算符"in"的判断,判断字符串'1'是否是字符串'11'的成员,结果为True。然后,进行比较运算符"=="的判断,判断字符串'11'是否等于布尔值True,结果也为True。最后,使用逻辑运算符"and"将两个结果进行逻辑与运算,最终结果为True。

然而,这可能与我们的预期不符。我们可能希望表达式的结果为False,因为字符串'11'不等于布尔值True。为了解决这个问题,我们可以使用括号来明确指定运算的顺序,即将成员运算符"in"的判断与比较运算符"=="的判断分开。例如:

>>> ('1' in '11') == True
False
>>> '1' in ('11' == True)
False

通过使用括号明确指定运算的顺序,我们可以得到我们期望的结果False。

总结起来,Python中成员运算符"in"和比较运算符"=="的优先级可能导致表达式的执行结果与预期不符。为了避免这个问题,我们可以使用括号来明确指定运算的顺序。

0
0 Comments

在Python中,运算符的优先级与此问题无关。在Python的关系运算符链中,包含运算符被视为关系运算符的一种。因此:

'1' in '11' == True

等同于:

('1' in '11') and ('11' == True)

这是错误的,因为True不等于"11"。

出现这个问题的原因是因为包含运算符in和比较运算符==在运算符链中具有相同的优先级。在这种情况下,Python会按照从左到右的顺序依次执行运算符。因此,在上面的示例中,首先执行'1' in '11',得到结果为True,然后继续执行'11' == True,得到结果为False。最后,将这两个结果进行逻辑与运算,结果为False

要解决这个问题,可以使用括号来明确指定运算符的顺序。在上面的示例中,可以将包含运算符in和比较运算符==分别放在括号中,来明确指定它们的执行顺序。例如:

('1' in '11') == True

这样就可以得到正确的结果True

另外,还可以使用逻辑运算符and来连接包含运算符和比较运算符,以避免混淆。例如:

'1' in '11' and '11' == True

这样也可以得到正确的结果False

0
0 Comments

问题的出现原因是因为Python中的in运算符和==运算符具有相同的优先级。因此,默认情况下,它们按照从左到右的顺序进行评估,但还需要考虑到链接的问题。你提供的表达式('1' in '11' == True)实际上被评估为...

('1' in '11') and ('11' == True)

这当然是False。如果你不知道链接是什么意思,它允许你在Python中执行类似于以下的操作...

if 0 < a < 1:

并且这样的表达式会按照你的期望进行解释("a大于0但小于1")。

为了解决这个问题,我们可以使用括号来明确指定运算符的优先级。通过将in运算符的表达式用括号括起来,我们可以确保它被优先评估,而不受==运算符的干扰。例如,将表达式修改为:

'1' in ('11' == True)

这样就能得到正确的结果True。

总结起来,Python中的in运算符和==运算符具有相同的优先级,导致了表达式的错误解释。通过使用括号来明确指定运算符的优先级,我们可以解决这个问题。

0