2016-05-01 1 views
0

ここで私が働いているのは、ループ内にいくつかの印刷機能を追加して、すべてが正しく動作していることを確認しました。その点に達すると、最初のif文が何であっても真であるかのように戻りますが、文を!=に変更しても同じ結果が得られます。 if文を完全に無視しているようです。私は何が欠けていますか?私はPython 2.7で作業しています。大/ elif文は、最初の "if"を返すだけで、何があっても真だったかのように返ります。 Python

#Genome Analysis tool 

#Importing Stuffs 

#Creating Usefull functions 

#.#Asseses codon in an RNA sequence (Uses U instead of T) 
def codon_RNA(text): 
    if text == "UUU" or "UUC": 
     return "Phe" 
    elif text == "UUA" or "UUG" or "CUU" or "CUC" or "CUA" or "CUG": 
     return "Leu" 
    elif text == "AUU" or "AUC" or "AUA": 
     return "Ile" 
    elif text == "AUG": 
     return "Met" 
    elif text == "GUU" or "GUC" or "GUA" or "GUG": 
     return "Val" 
    elif text == "UCU" or "UCC" or "UCA" or "UCG" or "AGU" or "AGC": 
     return "Ser" 
    elif text == "CCU" or "CCC" or "CCA" or "CCA" or "CCG": 
     return "Pro" 
    elif text == "ACU" or "ACC" or "ACA" or "ACG": 
     return "Thr" 
    elif text == "GCU" or "GCC" or "GCA" or "GCG": 
     return "Ala" 
    elif text == "UAU" or "UAC": 
     return "Tyr" 
    elif text == "UAA" or "UAG" or "UGA": 
     return "|STOP| " 
    elif text == "CAU" or "CAC": 
     return "His" 
    elif text == "CAA" or "CAG": 
     return "Gln" 
    elif text == "AAU" or "AAC": 
     return "Asn" 
    elif text == "AAA" or "AAG": 
     return "Lys" 
    elif text == "GAU" or "GAC": 
     return "Asp" 
    elif text == "GAA" or "GAG": 
     return "Glu" 
    elif text == "UGU" or "UGC": 
     return "Cys" 
    elif text == "UGG": 
     return "Trp" 
    elif text == "CGU" or "CGC" or "CGA" or "CGG" or "AGA" or "AGG": 
     return "Arg" 
    elif text == "GGU" or "GGC" or "GGA" or "GGG": 
     return "Gly" 
    else: 
     return null 


#Setting up the variables 

genome = "ACUCGAUCAGCUAGCUAGCAUGCACUCGAUACGCGCUAUAUAGCUAGCUAGCAUAGCUACGAUCGAUGCUAGUGUGUGUUACCUAAUAAUAAUUAAUUAAUUAAUUAA" 


#Breaking down into codons 
""" Loop as long as 1/3 of the sequence breaks each chunk into an amino acid """ 

count = len(genome)/3 

print count 

for i in range(0,count):  
    temp = genome[3*i:3*i+3] 
    print temp 
    print i 
    print codon_RNA(temp) 

答えて

0

if文に誤りがあります。それは次のようになります:

if text == "UUU" or text == "UUC": 

他のステートメントにも同じです。

if (text == "UUU") or ("UUC"): 

し、任意の非空の文字列がTrueに評価されているので、あなたが効果的にif True:

1
text == "UUU" or "UUC" 

を書いたこれは実際にはPythonで

(text == "UUU") or ("UUC") 

を意味:何あなたが今やっていることは基本的にあり空でない文字列は "真実"とみなされるので、これは(something) or Trueと常に等しく、これは常にTrueです。

適切な方法で記述することです:

text == "UUU" or text == "UUC" 

をし、Python的な方法は、

text in {"UUU", "UUC"} 

であるか、おそらくあなたは、それぞれが/もし巨大なのではなく、酸アミノ酸にコドンマップするために辞書を構築する必要がありますエルフチェーン

CODON_TABLE = { 
    "UUU": "Phe", 
    "UUC": "Phe", 
    ... 
    "GGG": "Gly", 
} 

def codon_RNA(text): 
    return CODON_TABLE.get(text) 
関連する問題