Python或操作员

Python或操作员

问题描述:

所以,我不明白为什么Python没有正确评估该代码:Python或操作员

def makes10(a, b): 
    if (a or b == 10) or (a + b == 10): 
    return True 
    else: 
    return False 

而预期如下解释:

def makes10(a, b): 
    if a == 10 or b == 10 or (a + b == 10): 
    return True 
    else: 
    return False 

他们看起来是一样的我,但显然(a或b == 10)不被解释为(a == 10)或(b == 10)。有人能解释为什么发生这种情况吗?

Correct

Incorrect

+0

那么它会来自优先。 ==运算符优先于or运算符。所以你的评价出来是如果一个或(b == 10)或(a + b == 10) –

我不能完全肯定,但它可能是因为第一个语句不是一个操作?所以可能不需要括号。

+0

我已经找到了我的答案。显然Python不能一起读取它们,所以它应该表达为“if 10 in(a,b)”或每个变量应该与10逐一比较。 – Dorkymon

+0

@Dorkymon它与python无法一起阅读它们无关。在语句'a或b == 10'中,'=='优先于'或',所以这个语句实际上是'如果a是真的或者如果b == 10'。这只是这个语法如何工作的惯例。 – sobek