我无法理解一些简单的东西:
a = 1
b = 3
if a or b == 0:
print(a,b)
else:
print("NO")
我只是不理解“ or”和“ ==”在看起来不正确时为True。 当值是1,3时,print(a,b)运行。
答案 0 :(得分:1)
这仅评估if
语句if a
中的左项。假设a
为1
,则将其解释为真实。 or
仅在第一项为False
时才评估右侧表达式。为了更好地了解or
运算符在这些情况下的行为,您可以检查this post
因此,在这种特殊情况下,if a or b == 0
与if 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