2015-10-09 2 views
2

Я нахожусь в середине упражнения, чтобы перевести ДНК в белок. У меня есть словарь «кодоны», который я хочу перебирать и сопоставлять ключи с элементами в списке «plist». И тогда, конечно, напечатайте значение только для нового элемента («белка»), который я свяжу позже, как только я получу эту работу: P.Python3: Значение не печатается

Моя проблема заключается в том, что код после словаря ничего не печатает, хотя и не вызывает ошибок. Я попытался добавить оператор return, чтобы убедиться, что это исправит его, но нет. Советы/рекомендации/halp? Я об этом пионически?

n=3 
protein = [] 
plist = [DNA_input[i:i+n] for i in range(0, len(DNA_input), n)] 
if len(plist[-1]) % 3 == 0: 
    print("Sequence length OK") 
else: 
    print("Taking a bit off the end...") 
    plist.pop() 
    print(plist) 
codons = { 
'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M', 
'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T', 
'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K', 
'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R', 
'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L', 
'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P', 
'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q', 
'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R', 
'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V', 
'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A', 
'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E', 
'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G', 
'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S', 
'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L', 
'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_', 
'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W', 
} 

for key, value in codons.items(): 
    if key in codons in plist: 
      return value 
      protein.append(value) 
      print(protein) 
+0

'если ключ в кодонах в plist' - это новый для меня, что это значит? – paxdiablo

+0

Я понял, что тоже может быть источником неприятностей - если ключ кодонов равен значению в plist, тогда [сделать что-то]. – jsw

+1

, если вы уже знаете, что ключ находится в кодонах, тогда вы можете просто сделать 'if key in plist:' и переместить оператор 'return' после' print' – AChampion

ответ

2

Вы выручая на линии:

return value 

программа никогда не достигает линии print(protein)

В дополнение к этому, большинство есть вероятность, что в следующей строке:

if key in codons in plist: 

Вы не делаете то, что думаете, что делаете.

Поскольку вы отправили только часть исходного кода, отладить его непросто. Вы должны посмотреть полную ошибку (stacktrace), какая строка генерирует ее и оттуда.

+0

Не говоря уже о том, что в предоставленном коде это синтаксическая ошибка. – fjarri

+0

Я так и думал раньше, но я удалил его и до сих пор ничего не печатал из этой части кода. – jsw

+0

Удивительно, 'если ключ в кодонах в plist:' не является синтаксической ошибкой. Просто определяя 'DNA_input = 'ACDGATCB'', он работает нормально - хотя и не дает ожидаемого результата. – AChampion

Смежные вопросы