我创建了一个比较 x 和 y 变量的函数。函数内部有很多嵌套的 elif 来比较 x 和 y 然后返回整数。现在的问题是,当它运行到某个elif语句时,虽然语句是正确的,但它没有执行该语句。
def convertTo(self, x, y):
if( x == 0 & y == 0):
return 0
if( x == 0 & y == 1):
return 1
if( x == 0 & y == 2):
return 2
if( x == 0 & y == 3):
return 3
if( x == 1 & y == 0):
return 4 # Didn't return this line even though x = 1 and y = 0
else
return None
def main():
self.convertTo(0,0)
self.convertTo(0,1)
self.convertTo(0,2)
self.convertTo(0,3)
self.convertTo(1,0) # return None? Why?
请您参考如下方法:
您正在执行链式相等比较,但它并没有按照您认为的那样进行。按位 & 首先执行,因为它比 == 具有更高的优先级。
替换:
x == 1 & y == 0
# 1 == 1 & 0 == 0
# 1 == 0 == 0 False!
与:
x == 1 and y == 0
