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)
.
手动将其转换为整数
所以我一直在尝试制作一个在学校使用二分搜索的程序,但是每当我尝试 运行 它时,它都会返回错误 '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)
.