为什么我的代码不让我比较这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]
答案 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
or
和not
,而不是按位等效。