TypeError:binarySearch()得到一个意外的关键字参数'key'

问题描述 投票:-4回答:2

a = int(input("What number do you want to search for in the list? "))

def bubbleSort(alist):                                         
    for passnum in range(len(alist)-1,0,-1):                                   
        for i in range(passnum):                                   
            if alist[i]>alist[i+1]:                                            
                temp = alist[i]                                                         
                alist[i] = alist[i+1]                                          
                alist[i+1] = temp                                                

def binarySearch(alist, item):
    first = 0
    last = len(alist)-1
    found = False

    while first<=last and not found:
        midpoint = (first + last)//2                                           
        if alist[midpoint] == item:                                              
            found = True                                                           
        else:                                 
            if item < alist[midpoint]:
                last = midpoint-1
            else:
                first = midpoint+1

    return found                

def getkey(item):                                                 
    return item[0]                                               
alist = [(75, "Jack"), (23, "Mark"), (31, "Dave"), (93, "Michael"), (52, "Clare"), (67, "Connie"), (37, "Bob"), (87, "Gary"), (59, "Billy"), (69,"Simon")]                             
bubbleSort(alist)                                  

print(binarySearch(alist, a, key=getkey))

这是我得到的错误:

Traceback(最近一次调用最后一次): 文件“C:/ Python34 / Lib / idlelib / Binary Search.py​​”,第35行,in print(binarySearch(alist,a,key = getkey)) TypeError:binarySearch()得到一个意外的关键字参数'key'

知道为什么吗?

python
2个回答
1
投票

您传递给binarySearch()三个参数,但此函数只接受两个,因此无法识别参数'key'。

以这种方式调用函数:

print(binarySearch(alist, a))

0
投票

因为您定义了该函数有两个参数并且您将三个参数传递给该函数,所以会发生错误。你可以定义你的功能

`def binarySearch(alist, item, key=getkey):
    #your code

然后你可以将三个或两个参数传递给函数。

© www.soinside.com 2019 - 2024. All rights reserved.