2017-11-05 8 views
0

ランダムRNA転写物を生成するプログラムを作成しようとしています。 すべての4つのRNAヌクレオチドは等しい確率であり、各配列は開始コドンで始まり、停止コドンが導入されたときに終了します。それはシーケンスとPythonがエラーを提示されていません生成されません終了条件付きランダム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() 

(random.choice('AUCG'))*3は、あなたはそれが...見るんだと思う何をしていないため...

+0

あなたのコードは無限ループに入ります... –

答えて

1

あなたのコードは、無限ループに陥ります:

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

機能を3回呼び出すのではなく、1回呼び出すと結果が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' 
関連する問題