2017-12-06 14 views
2

Python 3에서 DNA 코돈을 아미노산으로 바꾸는 프로그램을 만들려고합니다. 그러나 코드를 입력 한 후에 오류 메시지가 나타나지 않지만 함수는 아무 것도 표시하지 않습니다. 코드를 실행하고 DNA 코드를 입력합니다. 예 : ATTGTTTCT, ILE VAL SER이 표시되어야합니다. ILE VAL SER이 표시되지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.아무 것도 표시하지 않는 기능 출력, Python

코드의 세 번째 행에
DNA_sequence = input("Enter your DNA sequence below: \n") 
DNA = DNA_sequence.upper() 
DNA_to_codons = ([DNA[start:start + 3]] for start in range(0, len(DNA), 3)) 

print('The amino acid chain of your DNA sequence is as follows: \n') 
for i in DNA_to_codons: 
    if(i=="ATG"): print("MET", end = ' ') 
    if(i=="TGA" or i=="TAA" or i=="TAG"): print("END", end = ' ') 
    if(i=="TTT" or i=="TTC"): print("PHE", end = ' ') 
    if(i=="TTA" or i=="TTG" or i=="CTT" or i=="CTC" or i=="CTA" or i=="CTG"): print("LEU", end = ' ') 
    if(i=="ATT" or i=="ATC" or i=="ATA"): print("ILE", end = ' ') 
    if(i=="GTT" or i=="GTC" or i =="GTA" or i=="GTG"): print("VAL", end = ' ') 
    if(i=="TCT" or i=="TCC" or i=="TCA" or i=="TCG"): print("SER", end = ' ') 
    if(i=="CCT" or i=="CCC" or i=="CCA" or i=="CCG"): print("PRO", end = ' ') 
    if(i=="ACT" or i=="ACC" or i=="ACA" or i=="ACG"): print("THR", end = ' ') 
    if(i=="GCT" or i=="GCC" or i=="GCA" or i=="GCG"): print("ALA", end = ' ') 
    if(i=="TAT" or i=="TAC"): print("TYR", end = ' ') 
    if(i=="CAT" or i=="CAC"): print("HIS", end = ' ') 
    if(i=="CAA" or i=="CAG"): print("GLN", end = ' ') 
    if(i=="AAT" or i=="AAC"): print("ASN", end = ' ') 
    if(i=="AAA" or i=="AAG"): print("LYS", end = ' ') 
    if(i=="GAT" or i =="GAC"): print("ASP", end = ' ') 
+2

'{ 'ATG': 'MET', 'TGA': 'END'}'등의 사전을 사용하십시오. –

+0

@Chris_Rands와 완전히 동의합니다 : Python의 사전은이 언어에서 가장 유용한 객체 중 하나입니다. 또 다른 충고 : 루프 변수 이름에'i'를 사용하지 마십시오. 반복 할 변수가 정수가 아닌 경우. 'codon'과 같이 더 의미있는 변수 이름을 사용하도록 코드를 명확하게 만듭니다. – bli

답변

2

변경

DNA_to_codons = ([DNA[start:start + 3]] for start in range(0, len(DNA), 3)) 

DNA_to_codons = (DNA[start:start + 3] for start in range(0, len(DNA), 3)) 

DNA_to_codons 각 소자 수율 당하고 DNA_to_codons 함유 발전기를 만드는 대신 스트링의 목록과 목록에 원래 코드가 있으므로 비교가 목록 (예 : ["ATT"])이 문자열 (즉, "ATT")과 비교 될 때 작동하지 않습니다.