我正在学习蟒蛇,我们学习指南中的一个问题要求评估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指向问题这里屏幕截图的链接
发布于 2021-08-24 14:17:46
问题是您使用布尔运算符or来比较字符串。你可以这样想这样的比较:
(mrna [-3:]==end_rna1 or end_rna2 or end_rna3)
(((mrna [-3:]==end_rna1) or end_rna2) or end_rna3)因为or是一个布尔运算符,所以它需要处理布尔函数。可以使用bool(<str>)将字符串转换为布尔值。
(((mrna [-3:]==end_rna1) or bool(end_rna2)) or bool(end_rna3))任何不为空的字符串。任何不是""的字符串都是“真实的”。这意味着bool(non_empty_str) == True和bool('') == False。
(((mrna [-3:]==end_rna1) or True) or True)
((True) or True)
(True or True)
True现在,你该怎么解决呢?有几种方法可以解决这个问题。
or。
如果(mrna0:3==start_rna)和(mrna-3:=end_ RNA 1或mrna-3:=end_RNA 2或mrna-3:=end_RNA 3):length =len(mrna 3:-3)返回长度:(mrna 0:3!=start_rna)或(mrna-3:=end_rna1或mR-3:=end_rna2或mrna-3:!=end_rna3))返回“不可读的RNA代码”in,但这对于3来说太过了。
如果mrna 0:3 == start_rna和mrna-3: in end_rna1,end_rna2,end_rna3: end_rna2=len(mrna 3:-3)返回长度(mrna 0:3 != start_rna或mrna-3: not in end_rna1,end_rna2,end_rna3)返回“不可读的RNA代码”。见鬼,你甚至可以使用字符串方法str.startswith和str.endswith。
if mrna.startswith(start_rna) and mrna.endswith([end_rna1, end_rna2, end_rna3]):
length = len(mrna[3:-3])
return length
else:
...https://stackoverflow.com/questions/68908705
复制相似问题