我的Python DNA序列错误

时间:2014-04-10 23:50:25

标签: python

所以这是我一直在努力的代码。我尝试对给定的DNA链使用str.index方法,但无济于事。这段代码中某处出现了错误,但我不确定我忘记包含什么。如果你能给我一些关于为什么这个程序不起作用的指示,那就太好了:

class dnaString (str):
    def __new__(self,s):
        return str.__new__(self,s.upper())

    def getNewStrand (self):
        return str.index("ACTG")

    def printNewStrand (self):
        print ("New DNA strand: {0}".format(str.index("ACTG")))

dna = input("Enter a dna sequence: ")
x=dnaString(dna)
x.printNewStrand()

1 个答案:

答案 0 :(得分:1)

使用self.index,而不是str.index

    print ("New DNA strand: {0}".format(self.index("ACTG")))

或者更好,修复getNewStrand并在printNewStrand中使用它:

def getNewStrand(self):
    return self.index("ACTG")

def printNewStrand(self):
    print("New DNA strand: {0}".format(self.getNewStrand()))

str.index是一个需要2个参数的方法:

>>> str.index('abc','b')
1

它找到b中第一次出现abc的索引(如果有的话)。

selfstr的一个实例。使用实例调用方法时,实例将隐式作为函数的第一个参数提供。所以self.index('ACTG')调用

str.index(self, 'ACTG')

如果self.index('ACTG')不在ACTG

self会引发ValueError。如果您不想提出错误,可以拨打self.find('ACTG')。如果ACTG不在self中,则self.find将返回-1而不是引发ValueError。否则,它的行为与self.index相同。