gpt4 book ai didi

list - 类型错误:列表索引必须是整数,而不是 float

转载 作者:行者123 更新时间:2023-12-02 20:23:39 25 4
gpt4 key购买 nike

我有一个 python 3.x 程序产生错误:

def main():
names = ['Ava Fischer', 'Bob White', 'Chris Rich', 'Danielle Porter',
'Gordon Pike', 'Hannah Beauregard', 'Matt Hoyle',
'Ross Harrison', 'Sasha Ricci', 'Xavier Adams']

entered = input('Enter the name of whom you would you like to search for:')
binary_search(names, entered)

if position == -1:
print("Sorry the name entered is not part of the list.")
else:
print(entered, " is part of the list and is number ", position, " on the list.")
input('Press<enter>')

def binary_search(names, entered):
first = 0
last = len(names) - 1
position = -1
found = False

while not found and first <= last:
middle = (first + last) / 2

if names[middle] == entered:
found = True
position = middle
elif names[middle] > entered:
last = middle - 1
else:
first = middle + 1

return position

main()

错误是:

TypeError: list indices must be integers, not float

我无法理解此错误消息的含义。

最佳答案

您似乎正在使用 Python 3.x。 Python 3.x 中的重要区别之一是处理除法的方式。当您执行 x/y 时,Python 2.x 中会返回一个整数,因为小数点被截断(向下除法)。然而在 3.x 中,/ 运算符执行“true”除法,结果是 float 而不是整数(例如 1/2 = 0.5)。这意味着您现在尝试使用 float 来引用列表中的位置(例如 my_list[0.5] 甚至 my_list[1.0]),这将不起作用,因为 Python 需要一个整数。因此,您可能首先要尝试使用 middle = (first + last)//2 进行调整,以便结果返回您期望的结果。 // 表示 Python 3.x 中的楼层划分。

关于list - 类型错误:列表索引必须是整数,而不是 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com