所以这是我一直在努力的代码。我尝试对给定的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()
答案 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
的索引(如果有的话)。
self
是str
的一个实例。使用实例调用方法时,实例将隐式作为函数的第一个参数提供。所以self.index('ACTG')
调用
str.index(self, 'ACTG')
self.index('ACTG')
不在ACTG
, self
会引发ValueError。如果您不想提出错误,可以拨打self.find('ACTG')
。如果ACTG
不在self
中,则self.find
将返回-1而不是引发ValueError。否则,它的行为与self.index
相同。