【问题标题】:python - array length variable keeps changing into a 'none type'python - 数组长度变量不断变为“无类型”
【发布时间】:2022-01-13 05:46:42
【问题描述】:

所以我一直在尝试制作一个使用二分搜索来学校的程序,但是每当我尝试运行它时,它都会返回错误“TypeError:列表索引必须是整数或切片,而不是 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}")

我明确声明它是一个整数,但它不起作用,我不知道为什么

【问题讨论】:

    标签: arrays binary-search python-3.8


    【解决方案1】:

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

    另外,看看python中///的区别。如果您使用// 除以二,它将始终返回一个整数,您无需使用half = int(half) 手动将其转换为int。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2019-03-14
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      相关资源
      最近更新 更多