Вы нигде не отображаете цифры в своем коде.Количество кодонов - это разница между конечным и начальным индексами, пол делится на 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)
не кратно 3 от start
.