不了解“或”&“ ==”时为True

时间:2019-05-14 09:08:40

标签: python

我无法理解一些简单的东西:

a = 1
b = 3

if a or b == 0:
    print(a,b)
else:
    print("NO")

我只是不理解“ or”和“ ==”在看起来不正确时为True。     当值是1,3时,print(a,b)运行。

2 个答案:

答案 0 :(得分:1)

这仅评估if语句if a中的左项。假设a1,则将其解释为真实。 or仅在第一项为False时才评估右侧表达式。为了更好地了解or运算符在这些情况下的行为,您可以检查this post

因此,在这种特殊情况下,if a or b == 0if a的作用相同。

答案 1 :(得分:0)

首先,正确的检查方法是if a == 0 or b == 0

In [1]: a = 1 
   ...: b = 3 
   ...:                                                                                                                                                                           

In [2]: if a==0  or b == 0: 
   ...:     print(a,b) 
   ...: else: 
   ...:     print("NO") 
   ...:                                                                                                                                                                           
NO
In [12]: a = 0                                                                                                                                                                    

In [13]: b = 0                                                                                                                                                                    

In [14]: if a==0  or b == 0: 
    ...:     print(a,b) 
    ...: else: 
    ...:     print("NO") 
    ...:                                                                                                                                                                          
0 0

当您执行if a or b==0时,它会将其评估为if 1,这是True,因为在Python中1被解释为True,因此最终是if a,因此您会看到(1,3被打印在原始问题中

In [9]: a = 1                                                                                                                                                                     

In [10]: b = 3                                                                                                                                                                    

In [11]: if a or b == 0: 
    ...:     print(a,b) 
    ...: else: 
    ...:     print("NO") 
    ...:                                                                                                                                                                          
1 3