2017-06-19 117 views
0

爲什麼我的代碼不讓我比較這4個整數---它只是不返回任何值?我在做什麼錯 - 只是一個初學者比較int值

def isinRange(exonStartPos, exonEndPos, ChromListStartPos, ChromListEndPos): 
    inRange = False 
    if exonStartPos < ChromListStartPos & exonEndPos < ChromListEndPos: 
     returnList = [inRange, 0 , 0] 
     return returnList 
    if exonStartPos > ChromListEndPos & exonEndPos> ChromListEndPos: 
     returnList = [inRange, 0 , 0] 
     return returnList 
    if exonStartPos < ChromListStartPos & exonEndPos < ChromListEndPos: 
     inRange = True 
     returnList = [inRange, ChromListStartPos, exonEndPos] 
     return returnList 
    if exonStartPos > ChromListStartPos & exonEndPos > ChromListEndPos: 
     inRange = True 
     returnList = [inRange, exonStartPos, ChromListEndPos] 
     return returnList 
    if exonStartPos == ChromListStartPos & exonEndPos <= ChromListEndPos: 
     inRange = True 
     returnList = [inRange, exonStartPos, exonEndPos] 
     return returnList 
    if exonStartPos >= ChromListStartPos & exonEndPos == ChromListEndPos: 
     inRange = True 
     returnList= [inRange, exonStartPos, exonEndPos] 
     return returnList 


if __name__ == '__main__': 
    ChromListRange = isinRange(665973, 666002, 745554,752391) 
    print ChromListRange[0] 
+0

不應該在您的函數定義下的代碼縮進? –

+0

是的,抱歉,當我在堆棧交換中輸入時,它一定是複製錯誤 –

+0

請解釋結果應該是什麼,並修復您的縮進(編輯:抱歉,我沒有看到上面的評論) – gdelab

回答

3

我相信你需要改變你的& s到and。它爲我工作。

0

操作員的準確性。

注意以下事項:

>>> 2 < 3 and 1 < 2 
True 
>>> 2 < 3 & 1 < 2 
False 

第一條語句的計算結果爲:

(2<3) and (1<2) 
True and True 
True 

第二然而,計算結果爲:

2 < (3 & 1) < 2 
2 < 1 < 2 
False 

a<b<c是蟒蛇有效的語法(在像C語言,這將是一個語法錯誤),所以沒有錯誤拋出,你只是得到意外輸出。

邏輯代數應該使用andornot,而不是按位等效。