Python RNA序列长度计算代码运行结果不符合预期求助
你代码中存在的错误如下:
- 语法错误:函数定义符号错误
函数定义行def rna_length(mrna);末尾的分号需要改为英文冒号:,Python函数定义的语法要求末尾必须是冒号。 - 核心逻辑错误:终止密码子判断规则错误
你写的mrna [-3:]==end_rna1 or end_rna2 or end_rna3不符合Python逻辑判断的语法,这种写法等价于(mrna[-3:] == end_rna1) or True or True,因为非空字符串的布尔值永远为True,所以不管RNA末尾是不是三个终止密码子中的一个,这个判断条件永远成立,这是你输出结果不符合预期的核心原因。
正确的写法为mrna[-3:] in (end_rna1, end_rna2, end_rna3),也可以展开写成mrna[-3:] == end_rna1 or mrna[-3:] == end_rna2 or mrna[-3:] == end_rna3。 - 语法错误:else分支冗余+缩进错误
else后不需要额外写判断条件,你写的else: ((mrna[0:3]!=start_rna) or (mrna [-3:]!=end_rna1 or end_rna2 or end_rna3))属于完全多余的无效代码。
另外Python靠缩进划分代码块,你if分支下的两行代码、else分支下的return代码都没有正确缩进,运行会直接报语法错误。 - 冗余写法:变量末尾多余分号
Python中不需要在变量赋值语句末尾加分号,你写的start_rna = 'AUG';这类语句末尾的分号可以删除,不报错但属于冗余写法。
修正后的可运行代码:
def rna_length(mrna): start_rna = 'AUG' end_rnas = ('UGA', 'UAA', 'UAG') if mrna[:3] == start_rna and mrna[-3:] in end_rnas: length = len(mrna[3:-3]) return length else: return "Not readable RNA code"
内容的提问来源于stack exchange,提问作者Danny de Bont
相关产品推荐
相关产品推荐

