2017-06-19 4 views
0

Warum lässt mein Code mich nicht diese 4 Ganzzahlen vergleichen --- es gibt nur keine zurück? Was mache ich falsch - nur ein AnfängerVergleichen von int-Werten

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

Sollte Ihr Code unter Ihrer Funktionsdefinition nicht eingerückt sein? –

+0

ja es ist, es tut mir leid, es muss ein Kopierfehler gewesen sein, als ich es auf Stapelaustausch eingegeben habe –

+0

Bitte erklären Sie, was das Ergebnis sein sollte, und beheben Sie Ihre Einrückung (Bearbeiten: Entschuldigung, ich hatte die Kommentare nicht gesehen) – gdelab

Antwort

3

Ich glaube, Sie & s and ändern müssen. Es hat für mich funktioniert.

0

Operatorpräzidenz.

folgendes beachten:

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

Die erste Anweisung ausgewertet:

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

Der zweite jedoch ausgewertet:

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

a<b<c gültige Syntax in Python ist (in a Sprache wie C, dies wäre ein Syntaxfehler), also wird kein Fehler geworfen, Sie bekommen nur unerwartete Ausgabe.

Logische Algebra sollte mit andor und not anstelle der bitweisen Äquivalente erfolgen.