python中给定mrna序列上的密码子计数
这是我一直尝试使用的代码,但无法正常工作:python中给定mrna序列上的密码子计数,python,python-3.x,bioinformatics,transcription,Python,Python 3.x,Bioinformatics,Transcription,这是我一直尝试使用的代码,但无法正常工作: mrna = input("Please enter mRNA sequence: ") start = mrna.find('AUG') if start != -1: while start + 2 < len(mrna): codon = mrna[start:start + 3] if codon == "UAA": break print(codon)
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
while start + 2 < len(mrna):
codon = mrna[start:start + 3]
if codon == "UAA":
break
print(codon)
start += 3
我真的不知道出了什么问题。代码中没有显示数字。密码子的数目是末端和起始指数之间的差值,底除以3 您可以使用生成器来帮助您检查密码子
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
end, last = next((x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA')), (len(mrna), 'end'))
print(f'{(end - start) // 3} codons between AUG and {last}')
else:
print('AUG not found')
如果mrna[x:x+3]在('UAA','UAG','UGA')中,那么生成器
(x,mrna[x:x+3]在范围内(start+3,len(mrna)-3,3)中的x)
从索引开始+3
到结尾遍历所有密码子,并生成与('UAA','UAG','UGA')
中的任何密码子匹配的密码子以及索引next
通常返回迭代器的下一个(第一个)元素。对于第二个参数,当迭代器用完时,它返回额外的参数作为哨兵,而不是引发StopIteration
/
是截断除法运算符,因此即使len(mrna)
距离start
不是3的倍数,它也能正常工作。请显示清晰的输入顺序,并标记预期的开始和结束。谢谢!几乎完美,我只是将print(AUG和{last}之间的f'{(end-start)//3}密码子)更改为print(AUG和{last}之间的f'{(end-start)//6}密码子)
mrna = input("Please enter mRNA sequence: ")
start = mrna.find('AUG')
if start != -1:
end, last = next((x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA')), (len(mrna), 'end'))
print(f'{(end - start) // 3} codons between AUG and {last}')
else:
print('AUG not found')