python - 数组长度变量不断变为 'none type'

python - array length variable keeps changing into a 'none type'

所以我一直在尝试制作一个在学校使用二分搜索的程序,但是每当我尝试 运行 它时,它都会返回错误 'TypeError: list indices must be integers or slices, not NoneType'

这是代码:

arr = [1,2,3,4,5,6,7]
find = 3
if len(arr)%2 != 0:
    half = int(len(arr)+1)
else:
    half = int(len(arr))
half = half/2
half = int(half)

while True:
    half = int(half)
    sort = arr[half]
    print(sort)
    if find < sort:
        half = print(half/2)
    elif find > sort:
        half = half+(half/2)
    elif find == sort:
        print(f"found at position {half}")

我明明说是整数,就是不行,不知道为什么

您的问题是 half = print(half/2) 行。 print 是一个不 return 任何东西的函数(因此它 returns None),然后你将 None 分配给一半。您的意思可能是 half = half/2,如果您想打印它,请在下一行打印。

另外,看看python中///的区别。如果您使用 // 除以二,它总是 return 一个整数,您不需要使用 half = int(half).

手动将其转换为整数