使用Python查找给定条件下的RNA长度
我的任务是设计一个识别RNA代码长度的函数(不包括起始密码子和终止密码子)。该函数还必须确定其代码是否实际有效(必须包含AUG作为起始密码子,并在末尾包含UGA、UAA或UAG) 注:RNA以起始密码子AUG开始,以UGA、UAA或UAG结束 如果不满足上述条件,函数必须返回“不可读的RNA代码”使用Python查找给定条件下的RNA长度,python,conditional-statements,Python,Conditional Statements,我的任务是设计一个识别RNA代码长度的函数(不包括起始密码子和终止密码子)。该函数还必须确定其代码是否实际有效(必须包含AUG作为起始密码子,并在末尾包含UGA、UAA或UAG) 注:RNA以起始密码子AUG开始,以UGA、UAA或UAG结束 如果不满足上述条件,函数必须返回“不可读的RNA代码” def rna_length(mrna): start_trans = 'AUG' end_trans1 = 'UAA' end_trans2 = 'UGA' end
def rna_length(mrna):
start_trans = 'AUG'
end_trans1 = 'UAA'
end_trans2 = 'UGA'
end_trans3 = 'UAG'
if ((mrna[0:3]!=start_trans) and (mrna [-3:]!=end_trans1 or end_trans2 or end_trans3)):
return "Not readable RNA code"
else:
(mrna[0:3]==start_trans) and (mrna [-3:]==end_trans1 or end_trans2 or end_trans3)
length = len(mrna[3:-3])
return length
但这段代码不适用于“augaggcaccucucuac”。它返回长度而不是“不可读”问题在于:
if ((mrna[0:3]!=start_trans) and (mrna [-3:]!=end_trans1 or end_trans2 or end_trans3)):
您只需将和
更改为或
,如下所示:
if ((mrna[0:3]!=start_trans) or (mrna [-3:]!=end_trans1 or end_trans2 or end_trans3)):
这是因为,如果RNA代码不以“AUG”开头,或如果代码不以“UAA”、“UGA”或“UAG”结尾,则它不是有效的RNA代码
完整代码:
def rna_length(mrna):
start_trans = 'AUG'
end_trans1 = 'UAA'
end_trans2 = 'UGA'
end_trans3 = 'UAG'
if ((mrna[0:3]!=start_trans) or (mrna [-3:]!=end_trans1 or end_trans2 or
end_trans3)):
return "Not readable RNA code"
else:
(mrna[0:3]==start_trans) and (mrna [-3:]==end_trans1 or end_trans2 or
end_trans3)
length = len(mrna[3:-3])
return length
def main():
print(rna_length("AUGAGGCACCUUCUGCUCCUUAC"))
if __name__== "__main__":
main()
输出:
Not readable RNA code
我认为您的代码中有一个逻辑错误: 在“如果检查”中,您要检查是否: 前三个字母是“AUG”
mrna[0:3]==start\u trans
如果最后三个字母是‘UAA’或‘UGA’或‘UAG’:
mrna[-3::][=end_trans1或end_trans2或end_trans3
如果两者都为真,则应返回长度。
因此,如果一个是假的,我们应该得到错误
因此,您的if检查应为:
if (mrna[0:3] != start_trans) or (mrna[-3:] != end_trans1 or end_trans2 or end_trans3):
return "Not readable RNA code"
对于更短的IF支票,我们将其写入:
end_trans = ['UAA', 'UGA', 'UAG']
if not (mrna[0:3] == start_trans or mrna[-3:] in end_trans):
return "Not readable RNA code"`