我仍在学习Python,目前收到的大多数错误都是语法错误,尽管我现在收到的错误是
NameError: name 'mergeSort' is not defined
我似乎不明白为什么当在类外调用该方法时,该方法仍然有效,尽管一旦我将其包含在类中,该函数就会中断。在
class MergeStringList(list):
def add(self, item):
self.append(item)
def mergeSort(self):
print("Splitting ",self)
if len(self)>1:
mid = len(self)//2
lefthalf = self[:mid]
righthalf = self[mid:]
mergeSort(lefthalf)
mergeSort(righthalf)
i=0
j=0
k=0
while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
self[k]=lefthalf[i]
i=i+1
else:
self[k]=righthalf[j]
j=j+1
k=k+1
while i < len(lefthalf):
self[k]=lefthalf[i]
i=i+1
k=k+1
while j < len(righthalf):
self[k]=righthalf[j]
j=j+1
k=k+1
print("Merging ",self)
def printList(self):
print(self)
mergeList = MergeStringList()
mergeList.add("stitch")
mergeList.add("daily")
mergeList.add("blade")
mergeList.printList()
mergeList.mergeSort()
mergeList.printList()
递归调用需要在对象上调用,即
self.mergeSort
。更改这两行:mergeSort(lefthalf) mergeSort(righthalf)
更新:
为了使代码起作用,您还应该更改方法签名,因为它现在不接受参数。也就是说
def mergeSort(self, input)
相关问题 更多 >
编程相关推荐