我还在学习Python,而且我收到的大多数错误在这一点都是语法上的,虽然我现在收到的错误是
NameError:名称'mergeSort'未定义
我似乎无法理解为什么当在类外部调用时,该方法可行,但是一旦我将它包含在类中,函数就会中断。
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()
答案 0 :(得分:0)
递归调用要求在对象上调用,即self.mergeSort
。改变这两行:
mergeSort(lefthalf)
mergeSort(righthalf)
更新:
为了使代码能够运行,你也应该更改方法签名,因为它现在不接受参数。也就是说,
def mergeSort(self, input)