我有一个代码,首先按字母顺序对电子邮件进行排序,然后尝试使用二进制搜索从列表中搜索用户输入的电子邮件。但是,我一直坚持如何做这么久,并没有找到任何解决方案我得到的错误以及如何解决它。这是我的代码
def BubbleSort(logindata):
NoSwaps = 1
N = len(logindata)
logindata = list(logindata)
while NoSwaps == 1:
Count = 1
NoSwaps = 0
for Count in range(N-1):
if logindata[Count] > logindata[Count+1]:
temp = logindata[Count]
logindata[Count] = logindata[Count+1]
logindata[Count+1]=temp
NoSwaps=1
return tuple(logindata)
def BinarySearch(logindata,ItemSought):
First=0
Last=len(logindata)-1
ItemFound = False
SearchFailed = False
while ItemFound == False or SearchFailed == False:
Midpoint = (First + Last) // 2
if logindata[Midpoint] == ItemSought:
ItemFound = True
print("Item Found")
break
elif logindata[Midpoint] > ItemSought:
Last = Midpoint - 1
else:
First = Midpoint + 1
if __name__ == "__main__":
logindata=["tom@gmail.com","Password1"],["harry@gmail.com","Password2"],["jake@gmail.com","Password3"]
logindata=BubbleSort(logindata)
print(logindata)
ItemSought=input("Enter username")
BinarySearch(logindata,ItemSought)
我目前得到的错误是:
elif logindata[Midpoint] > ItemSought:
TypeError: unorderable types: list() > str()
答案 0 :(得分:2)
您正在将用户名/密码对(例如["tom@gmail.com","Password1"]
)与用户名(例如"tom@gmail.com"
)进行比较。
您需要从logindata[Midpoint]
中提取用户名,然后再将其与ItemSought
进行比较。