我正在学习python,我们学习指南中的一个问题是评估RNA
序列。我没有得到问题所建议的预期输出,我得到了17
代码如下:
####START FUNCTION
def rna_length(mrna);
start_rna = 'AUG';
end_rna1 = 'UGA';
end_rna2 = 'UAA';
end_rna3 = 'UAG';
if (mrna[0:3]==start_rna) and (mrna [-3:]==end_rna1 or end_rna2 or end_rna3):
length = len(mrna[3:-3])
return length
else: ((mrna[0:3]!=start_rna) or (mrna [-3:]!=end_rna1 or end_rna2 or end_rna3))
return "Not readable RNA code"
####END FUNCTION
问题here截图的链接
问题是您使用布尔运算符
or
来比较字符串。你可以这样比较:因为
or
是一个布尔运算符,所以它需要处理布尔运算。可以使用bool(<str>)
将字符串转换为布尔值任何非空字符串(即任何非
""
的字符串)都是“truthy”。这意味着bool(non_empty_str) == True
和bool('') == False
现在,你应该如何修复它?有几种方法可以做到这一点
正确使用
or
使用集合。请注意,每当您不想修改集合时,使用元组而不是列表是标准的。我在这里使用列表是因为括号看起来不同。您也可以使用集合来加快
in
,但对于3来说,这太过分了见鬼,您甚至可以使用字符串方法
str.startswith
和str.endswith
相关问题 更多 >
编程相关推荐