[在特定条件下使用Python查找RNA的长度

问题描述 投票:1回答:2

我的任务是设计一个识别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_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

但是此代码不适用于'AUGAGGCACCUUCUGUGCUCCUUAC'。它返回长度,而不是“不可读”

python conditional-statements
2个回答
0
投票

您想知道最后三个是否与您的end_trans*相匹配,可以单独指定mrna [-3:]==end_trans1 or mrna [-3:]==end_trans2 or ...,也可以使用in。如果只是指定一个字符,例如。 end_trans2 or end_trans3它将始终为True。

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:] in [end_trans1,end_trans2,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

我们对其进行测试:

rna_length(mrna)
17

0
投票

问题出在以下情况:

if ((mrna[0:3]!=start_trans) and (mrna [-3:]!=end_trans1 or end_trans2 or end_trans3)):

您只需要将and更改为or,就像这样:

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
© www.soinside.com 2019 - 2024. All rights reserved.