用python定义超级简单的函数,但;缺少1个必需的位置参数“;

用python定义超级简单的函数,但;缺少1个必需的位置参数“;,python,Python,我放了两个这样的参数,它说缺少一个必需的位置参数。 我提出了3个论点,它说需要2个,但给出了3个 下面的逻辑有什么问题 def mergeSort(alist,sentence): if len(alist)>1: mid = len(alist)//2 lefthalf = alist[:mid] righthalf = alist[mid:] mergeSort(lefthalf) mergeSo

我放了两个这样的参数,它说缺少一个必需的位置参数。 我提出了3个论点,它说需要2个,但给出了3个

下面的逻辑有什么问题

def mergeSort(alist,sentence):
    if len(alist)>1:
        mid = len(alist)//2
        lefthalf = alist[:mid]
        righthalf = alist[mid:]

        mergeSort(lefthalf)
        mergeSort(righthalf)

        i=0
        j=0
        k=0
        while i < len(lefthalf) and j < len(righthalf):
            if lefthalf[i] < righthalf[j]:
                alist[k]=lefthalf[i]
                i=i+1
            else:
                alist[k]=righthalf[j]
                j=j+1
            k=k+1

        while i < len(lefthalf):
            alist[k]=lefthalf[i]
            i=i+1
            k=k+1

        while j < len(righthalf):
            alist[k]=righthalf[j]
            j=j+1
            k=k+1
        print(sentence)
        return alist

a=[7,5,4]
mergeSort(a,'Finished')
def mergeSort(列表,句子):
如果len(alist)>1:
mid=len(alist)//2
lefthalf=alist[:mid]
righthalf=alist[中间:]
合并排序(左半部分)
合并排序(右半部分)
i=0
j=0
k=0
而i
mergeSort
接受两个参数,但在函数体中递归调用它时,只给了它一个参数。 你应该换衣服

mergeSort(lefthalf)
mergeSort(righthalf)
分给

mergeSort(lefthalf, sentence)
mergeSort(righthalf, sentence)

您可以在这里定义mergeSort:
defmergesort(列表,句子):

(2个总参数,一个数组,一个字符串)

您可以在底部正确地调用它:
mergeSort(a,'Finished')

(2个总参数,一个数组,一个字符串)

你递归地称之为错误:

mergeSort(lefthalf)
mergeSort(righthalf)
(1个总参数,一个数组,缺少字符串

相反,可以这样称呼它:

mergeSort(lefthalf, sentence)
mergeSort(righthalf, sentence)
给你:

def mergeSort(alist,sentence):
    if len(alist)>1:
        mid = len(alist)//2
        lefthalf = alist[:mid]
        righthalf = alist[mid:]

        mergeSort(lefthalf, 'Not finished')
        mergeSort(righthalf, 'Not finished')

        i=0
        j=0
        k=0
        while i < len(lefthalf) and j < len(righthalf):
            if lefthalf[i] < righthalf[j]:
                alist[k]=lefthalf[i]
                i=i+1
            else:
                alist[k]=righthalf[j]
                j=j+1
            k=k+1

        while i < len(lefthalf):
            alist[k]=lefthalf[i]
            i=i+1
            k=k+1

        while j < len(righthalf):
            alist[k]=righthalf[j]
            j=j+1
            k=k+1

    print(sentence)
    return alist

a=[7,5,4] 
mergeSort(a,'Finished')
def mergeSort(列表,句子):
如果len(alist)>1:
mid=len(alist)//2
lefthalf=alist[:mid]
righthalf=alist[中间:]
合并排序(左半部分,“未完成”)
合并排序(右半部分,“未完成”)
i=0
j=0
k=0
而i
请正确缩进代码,以便准确读取。递归调用只提供一个参数,而不是两个参数。这是一个代码转储,不会试图回答OP的问题“下面的逻辑有什么问题?”我更改了函数,以便它们不会抛出错误:mergeSort(lefthalf,‘not finished’)mergeSort(右半部分,“未完成”)我不知道你的意思。