簡體   English   中英

python 中給定 mrna 序列的密碼子計數

[英]Codon count on a given mrna sequence in python

這是我一直在嘗試使用但無法正常工作的代碼:

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

預期起始密碼子: AUG

預期的終止密碼子: UAAUAGUGA如果例如:

input = "AUGUGA"
output = 1

input = "GAGAUGUUGGUUUAA"
output = 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')

生成器(x, mrna[x:x + 3] for x in range(start + 3, len(mrna) - 3, 3) if mrna[x:x + 3] in ('UAA', 'UAG', 'UGA'))遍歷從索引start + 3到結束的所有密碼子,並產生與('UAA', 'UAG', 'UGA')中的任何內容以及索引匹配的密碼子。 next通常返回迭代器的下一個(第一個)元素。 使用第二個參數,它將額外參數作為哨兵返回,而不是在迭代器用完時引發StopIteration //是截斷除法運算符,因此即使len(mrna)距離start不是 3 的倍數,它也能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM