Я думаю, что у вас есть ошибка логика c в вашем коде:
В проверке IF вы хотите проверить:
Первые три буквы «AUG»
mrna[0:3] == start_trans
и если последние три буквы - «UAA», «UGA» или «UAG»:
mrna[-3:] == end_trans1 or end_trans2 or end_trans3
Если оба правда, длина должна быть возвращена. Поэтому, если один из них ложный, мы должны получить ошибку.
Итак, если проверка должна быть:
if (mrna[0:3] != start_trans) or (mrna[-3:] != end_trans1 or end_trans2 or end_trans3):
return "Not readable RNA code"
для еще более короткой проверки IF, мы пишем ее:
end_trans = ['UAA', 'UGA', 'UAG']
if not (mrna[0:3] == start_trans or mrna[-3:] in end_trans):
return "Not readable RNA code"`