#python #komodo
#python #komodo
Вопрос:
def translateGene(dnaStrand, startPos, stop):
protein = []
def aminoAcid(dnaCodon):
return(dnaCode[dnaCodon])
maybeCodon = [dnaStrand[i:i 3] for i in range (startPos, stop-1)]
for j in maybeCodon:
if j == (dnaCode[dnaCodon]):
protein.append(j)
return protein
Эта функция принимает строку, целое число в качестве начального индекса в строке и целое число в качестве конечного индекса в строке. Идея программы состоит в том, чтобы разделить строку на 3 буквенных сокращения с буквами от начальной точки до конечной точки. Затем он должен искать в заданном словаре все сокращения, и если они присутствуют в словаре, добавьте их результаты в список белков, но мой приведенный выше код оставляет белок пустым. Функция Aminoacid была создана для меня, чтобы использовать ее как часть этой функции, но я не уверен, правильно ли я ее вызвал. Мой приведенный выше код оставляет белок пустым.
Кто-нибудь может объяснить, почему. Любая помощь приветствуется.
Комментарии:
1. Во-первых, у вас есть вложенные функции, и вы никогда не вызываете
aminoAcid
— и даже если бы вы это сделали, вы бы немедленно вернулись, преждеprotein.append(j)
чем вызывается.2. Есть
return
def aminoAcid(...)
вход, прежде чем что-либо произойдет. Функция завершится там. Тем не менее, он никогда не будет вызван (за исключением того, что вы только что допустили ошибку отступа здесь, в своем сообщении, и какой-то код отсутствует).3. мне кажется, что aminoAcid() определен, но никогда не вызывается.
4. Не могли бы вы показать нам пример того, какой ваш ввод и ожидаемый результат, пожалуйста?
5. Да, конечно, что-то вроде этого: translateGene(‘GGGATGCTTTAG’, 3, 9) Затем программа должна разбить строку между индексами 3 и 9, чтобы каждый раз давать трехбуквенные сокращения, начинающиеся со следующей буквы. например, в приведенной выше строке сокращения будут: ATG, TGC,GCT, CTT. Некоторые из этих сокращений хранятся в словаре под названием dnaCode, идея состоит в том, что каждая аббревиатура проверяется по словарю, и если они присутствуют, соответствующая аминокислота будет включена в список белков, в данном случае ‘ATG’: ‘Met и ‘CTT’: ‘Leu’, поэтому Met и Leu должны бытьбыть в списке белков.
Ответ №1:
Во-первых, я думаю, что ваш код должен иметь отступы, скорректированные на:
def translateGene(dnaStrand, startPos, stop):
protein = []
def aminoAcid(dnaCodon):
return (dnaCode[dnaCodon])
maybeCodon = [dnaStrand[i:i 3] for i in range(startPos, stop - 1)]
for j in maybeCodon:
if j == (dnaCode[dnaCodon]):
protein.append(dnaCodon)
return protein
Затем протестируйте его.
и обратите внимание, что, похоже, у вас есть два глобальных dnaCode
, dnCodon
, которые известны перед вызовом функции.