比较int值

时间:2017-06-19 14:58:40

标签: python

为什么我的代码不让我比较这4个整数---它只返回没有?我做错了什么 - 只是一个初学者

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]

2 个答案:

答案 0 :(得分:2)

我认为您需要将&更改为and。它对我有用。

答案 1 :(得分: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是python中的有效语法(在像C这样的语言中,这将是一个语法错误)因此不会抛出任何错误,只会得到意外的输出。

逻辑代数应该使用and ornot,而不是按位等效。