2017-11-05 1 views
0

임의의 RNA 전 사체를 생성하는 프로그램을 작성하려고합니다. 모든 4 개의 RNA 염기가 동등한 확률을 가지며, 각 서열은 시작 코돈으로 시작하고 종료 코돈이 도입 될 때만 끝납니다.끝 조건을 가진 무작위 RNA 전 사체 생성

import random 

def random_rna(): 
    rna = 'AUG' 
    stop_codon = ['UAG','UAA','UGA'] 
    while rna[-3:] not in stop_codon: 
      rna += (random.choice('AUCG'))*3 
    return rna 

random_rna() 
이 오류를 제시하지 않는 순서와 파이썬을 생성하지 않습니다

...

+0

코드가 무한 루프로 실행됩니다 ... –

답변

1

(random.choice('AUCG'))*3 당신이 그것을 볼 ... 않는 생각하지 않기 때문에 코드는 무한 루프로 실행 :

In [2]: (random.choice('AUCG')) * 3 
Out[2]: 'GGG' 

세 번 째 함수를 호출하는 것이 아니라 한 번 호출하여 결과를 3 회 반복합니다. 이 결과로 while 조건은 결코 참이되지 않습니다.

목록에 추가 한 다음 끝에 한 번 가입하는 것이 좋습니다. 그것은 당신이 만드는 모든 문자열 연결 호출보다 저렴합니다.

stop_codon = ['UAG','UAA','UGA'] 

def random_rna(): 
    rna = ['AUG'] 
    while rna[-1] not in stop_codon: 
      rna.append(''.join([random.choice('AUCG') for _ in range(3)])) 

    return ''.join(rna) 

print(random_rna()) 
'AUGAGCAGCGAGAGGGGCGCGCAGACGACGCCUGGCUCGUAUAGUUAUAGGACCUUCCGUGAACAUAACGCUACAGUCAGGUUGCAAAAUAAGCAGGUAACUAACUAUCUGCAGGCUCGAGUUGUCCUGCCGUAG'