涉及将DNA转录为mRNA的家庭作业项目;获得"TypeError: string indices must be integers"



我是大学的学生"为初学者编码"课程。我们的课程最终项目涉及创建一个可以从用户输入或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)

相关内容

最新更新