我是大学的学生"为初学者编码"课程。我们的课程最终项目涉及创建一个可以从用户输入或TXT文件打印DNA序列的DNA Sequencer,在序列中计数核苷酸,将DNA转录为mRNA并转化为多肽。我可以打印序列并计算核苷酸,但是当涉及转录时,我会得到此错误。
我们的班级正在为此项目使用Spyder。
这是我目前要转录DNA的代码。
def transcribe(DNA):
mRNA = ""
for i in DNA: # Use a for loop to walk through the DNA data
# Use an if ... elif ... elif ... elif statement
# to do different things depending on which
# nucleotide you find there, add mRNA nucleotides
# using the string += "X" function
if DNA[i] == "C":
mRNA += "G"
elif DNA[i] == "A":
mRNA += "U"
elif DNA[i] == "T":
mRNA += "A"
elif DNA[i] == "G":
mRNA += "C"
print ("mRNA sequence: " + mRNA)
print()
return(mRNA)
运行程序并到达可以选择将DNA转录为mRNA的地步后,收到了此错误:
if DNA[i] == "C":
TypeError: string indices must be integers
如何修复我的语法以使此工作?
for i in DNA:
如果DNA
是字符串,则i
将占据该字符串中每个字符的值,而不是整数值。
循环内的if
语句可以将i
直接与您要寻找的值进行比较。
if i == "C":
mRNA += "G"
i
将是一个字符,因为 DNA
是字符串,因此您可以使用字典来轻松地翻译每个字母:
def transcribe(DNA):
mRNA = ""
translation = {'C' : 'G', 'A' : 'U', 'T' : 'A', 'G' : 'C'}
for i in DNA:
mRNA += translation[i]
print ("mRNA sequence: " + mRNA)
print()
return(mRNA)