Проблемы с завершением функции мРНК - PullRequest
2 голосов
/ 21 марта 2020

Это упражнение, над которым я работаю:

Функция для построения, amin_acids, должна возвращать список кортежа и целого числа, если дана строка кода мРНК. Первый кортеж должен содержать все аминокислоты, а целое число должно быть числом различных аминокислот. Вы можете использовать словарь ниже, чтобы помочь с вашей функцией. Функция также не должна включать коды кодонов остановки.

Это код, который я написал:

def amino_acids(mrna):
    my_string = " "
    my_dict = {'AUG':'Met', 'CCA':'Pro', 'CCU':'Pro'}

    for i in range(len(mrna)):
        my_string += my_dict[mrna[i]]
# your code here
        return

Это ошибка, которую я получаю:

KeyError                                  Traceback (most recent call last)
<ipython-input-42-e85578c5ac05> in <module>
----> 1 amino_acids('AUGCCACCUUGA')

<ipython-input-41-80f9417b4973> in amino_acids(mrna)
      5 
      6     for i in range(len(mrna)):
----> 7         my_string += my_dict[mrna[i]]
      8 # your code here
      9         return

KeyError: 'A'

Кто-нибудь сможет мне помочь с тем, где я ошибся?

1 Ответ

0 голосов
/ 21 марта 2020

Кто-нибудь сможет мне помочь с тем, где я ошибся?

Ваш l oop for i in range(len(mrna)) и последующее чтение вашей мРНК в mrna с mrna[i] смотрит на отдельных персонажей. Однако вам нужно взглянуть на три символа одновременно, потому что каждая аминокислота кодируется как нуклеотидный триплет.

Я пытался объяснить все, что происходит в комментариях:

def amino_acids(mrna):
    protein = ""  # Start with empty protein string
    translation = {"AUG": "Met", "CCA": "Pro", "CCU": "Pro"}  # Which codon translates for which amino acid
    stop_codons = {"UGA"}  # Define stop codons
    while mrna:  # Repeat loop while mRNA isn't exhausted
        codon = mrna[:3]  # Select first three codes
        mrna = mrna[3:]  # Remove current codon from mRNA
        if codon in stop_codons:
            break  # Break loop if triple is a stop codon
        amino_acid = translation[codon]  # Translate codon into its amino acid
        protein += amino_acid  # Add the amino acid to the protein string
    return protein

print(amino_acids("AUGCCACCUUGA"))

Какие отпечатки:

MetProPro
...