首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >家庭作业项目,涉及DNA到mRNA的转录;获取"TypeError:字符串索引必须是整数“

家庭作业项目,涉及DNA到mRNA的转录;获取"TypeError:字符串索引必须是整数“
EN

Stack Overflow用户
提问于 2019-05-05 03:32:48
回答 2查看 58关注 0票数 0

我是大学“初学者编程”课程的一名学生。我们这门课的最后一个项目涉及创建一个DNA测序器,它可以从用户输入或txt文件打印DNA序列,计算序列中的核苷酸,将DNA转录成mRNA,并翻译成多肽。我可以打印出序列并计算核苷酸,但当涉及到转录时,我会得到这个错误。

我们的班级在这个项目中使用Spyder。

这是我目前用来转录DNA的代码。

代码语言:javascript
复制
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的位置后,收到以下错误:

代码语言:javascript
复制
 if DNA[i] == "C":

TypeError: string indices must be integers

我如何修正我的语法才能使它工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-05 03:37:00

代码语言:javascript
复制
for i in DNA:

如果DNA是一个字符串,那么i将采用该字符串中每个字符的值,而不是整数值。

循环中的if语句可以直接将i与您要查找的值进行比较。

代码语言:javascript
复制
if i == "C":
    mRNA += "G"
票数 3
EN

Stack Overflow用户

发布于 2019-05-05 03:46:36

因为DNA是一个字符串,所以i将是一个字符,所以您可以使用字典轻松地翻译每个字母:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55986136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档