python-3.x - 我有什么错误:TypeError:字符串索引必须是整数?如果我希望 bt 在函数 back_trans 之外,我该如何解决这个问题?
问题描述
定义主():
pep = 'MEGNCS'
newseqs = []
bt= {'I': ['ATA', 'ATC', 'ATT'], 'M': ['ATG'], 'T': ['ACA', 'ACC', 'ACG', 'ACT'], 'N': ['AAC', 'AAT'], 'K': ['AAA', 'AAG'], 'S': ['AGC', 'AGT', 'TCA', 'TCC', 'TCG', 'TCT'], 'R': ['AGA', 'AGG', 'CGA', 'CGC', 'CGG', 'CGT'], 'L': ['CTA', 'CTC', 'CTG', 'CTT', 'TTA', 'TTG'], 'P': ['CCA', 'CCC', 'CCG', 'CCT'], 'H': ['CAC', 'CAT'], 'Q': ['CAA', 'CAG'], 'V': ['GTA', 'GTC', 'GTG', 'GTT'], 'A': ['GCA', 'GCC', 'GCG', 'GCT'], 'D': ['GAC', 'GAT'], 'E': ['GAA', 'GAG'], 'G': ['GGA', 'GGC', 'GGG', 'GGT'], 'F': ['TTC', 'TTT'], 'Y': ['TAC', 'TAT'], '_': ['TAA', 'TAG', 'TGA'], 'C': ['TGC', 'TGT'], 'W': ['TGG']}
back_trans(pep,bt, 0, newseqs)
print('\n'.join(newseqs))
def back_trans(pep, bt, pos, newseqs,s=''):
if pos == len(pep)-1:
for codon in bt[pep[pos]]:
newseqs.append(s+codon)
return
for codon in bt[pep[pos]]:
back_trans(pep, pos+1, newseqs, s+codon)
主要的()
解决方案
这就是我执行所需功能的方式:
pep_in = 'MEGNCS'
bt_mstr= {'I': ['ATA', 'ATC', 'ATT'], 'M': ['ATG'], 'T': ['ACA', 'ACC', 'ACG', 'ACT'], 'N': ['AAC', 'AAT'],
'K': ['AAA', 'AAG'], 'S': ['AGC', 'AGT', 'TCA', 'TCC', 'TCG', 'TCT'], 'R': ['AGA', 'AGG', 'CGA', 'CGC', 'CGG', 'CGT'],
'L': ['CTA', 'CTC', 'CTG', 'CTT', 'TTA', 'TTG'], 'P': ['CCA', 'CCC', 'CCG', 'CCT'], 'H': ['CAC', 'CAT'], 'Q': ['CAA', 'CAG'],
'V': ['GTA', 'GTC', 'GTG', 'GTT'], 'A': ['GCA', 'GCC', 'GCG', 'GCT'], 'D': ['GAC', 'GAT'], 'E': ['GAA', 'GAG'],
'G': ['GGA', 'GGC', 'GGG', 'GGT'], 'F': ['TTC', 'TTT'], 'Y': ['TAC', 'TAT'], '_': ['TAA', 'TAG', 'TGA'], 'C': ['TGC', 'TGT'],
'W': ['TGG']}
def transcribe_seq(pep, bt):
newseq = []
for i in range(len(pep)-1,-1,-1):
if pep[i] in bt:
sqs = bt[pep[i]]
addseq = []
for s in sqs:
addseq.append(s)
if newseq:
rseq = []
while newseq:
csq = newseq.pop(0)
for asq in addseq:
rseq.append(asq+csq)
newseq = rseq
else:
newseq.extend(addseq)
return ", ".join(newseq)
transcribe_seq("CS", bt_mstr)
产量:
'TGCAGC, TGTAGC, TGCAGT, TGTAGT, TGCTCA, TGTTCA, TGCTCC, TGTTCC, TGCTCG, TGTTCG, TGCTCT, TGTTCT'
推荐阅读
- c++ - minGW (g++) 在 Windows 中与 QT-qmake 自动生成的 Makefile 链接错误
- android - 如何检查应用程序 Project Android Studio 中包含的库的 Android 清单文件?
- bash - 如果它不存在,如何将行添加到节
- python - Python assertItemsEqual/assertCountEqual AttributeError
- java - com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 com.example.yaryk.skymessage.Model.Chat 类型
- applescript - 怎么删除印象笔记的最后一行?
- coldfusion - 如何在cfscript中重载init()函数
- ios - Assets.xcassets 中图像的文件名
- amazon-ec2 - 如何通过cloudformation设置凭证?
- json - 在 React SPA 模型中,前端和后端之间的数据传输首选哪种方法