代码
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))
这是我得到的错误:
追踪(最近一次通话):
文件"C:\Python34/Lib/idlelib/Binary Search.py",第35行,在
中print(binarySearch(alist,a,key=getkey)
TypeError:binarySearch()获得了意外的关键字参数"key"
知道为什么吗
您向binarySearch()传递了三个参数,但此函数只接受两个,因此无法识别参数'key'。
以这种方式调用函数:
print(binarySearch(alist, a))
因为您定义函数有两个参数,并且您将三个参数传递给函数,所以会发生错误。你可以像一样定义你的功能
`def binarySearch(alist, item, key=getkey):
#your code
然后可以将三个或两个参数传递给函数。