首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成具有终止条件的随机RNA转录本

生成具有终止条件的随机RNA转录本
EN

Stack Overflow用户
提问于 2017-11-05 15:00:36
回答 1查看 186关注 0票数 0

我正在编写一个程序,生成随机的RNA转录本:所有4个RNA核苷酸的概率相等,每个序列以一个起始密码子开始,只有在引入一个停止密码子时才结束。

代码语言:javascript
复制
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()

它不会生成序列,python也不会出现任何错误.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-05 15:05:53

您的代码运行到无限循环中,因为(random.choice('AUCG'))*3不执行您认为它所做的事情.见:

代码语言:javascript
复制
In [2]: (random.choice('AUCG')) * 3
Out[2]: 'GGG'

它不是三次调用该函数,而是调用它一次,并对结果进行三倍化。因此,while条件永远不为真。

我建议把它附在一份清单上,然后在最后加入一次。它比你所做的所有字符串连接调用都便宜。

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47123009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档