xiannvytt
xiannvytt
采纳率100%
2021-04-02 16:41

初学者python代码实践

在print binary_search那里报错,第一天学习,有知道问题在哪里的大佬嘛

def binary_search(list,item):
    low = 0
    high=len(list)-1
    while low<=high:
        mid =(low+high)/2
        guess=list[mid]
        if guess==item:
            return mid
        if guess>item:
            high=mid-1
        else:
            low = mid+1
        return None
my_list = [1,3,5,7,9]
print binary_search(my_list, 3) 
print binary_search(my_list, -1) 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • technologist_18 CSDN技术专家团-Yang 1月前

    这段代码报错, 有2个地方修改了一下, 不报错了, 但是结果为None, 你结合你的需求再完善下:

    1 print语句修改, 需要加括号

    2 mid 在计算后, 用list切片, 需要是整数

    def binary_search(list,item):
        low = 0
        high=len(list)-1
        while low<=high:
            mid =(low+high)/2
            guess=list[int(mid)]  # 索引里面需要是整数, 上面mid计算的是含小数点
            if guess==item:
                return mid
            if guess>item:
                high=mid-1
            else:
                low = mid+1
            return None
    my_list = [1,3,5,7,9]
    print(binary_search(my_list, 3))   # print语句的写法修改 
    print(binary_search(my_list, -1))  
    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 1月前

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享
  • Hubans Hubans 1月前

    有两点错误:

    1:python3中print函数需要加括号了。print(binary_search(my_list, 3))

    2. mid =(low+high)/2这里需要采用整除,不然会出现小数(索引不能为小数)。改为mid =(low+high)//2即可

     

    点赞 评论 复制链接分享
  • qq_39905438 print("天涯") 1月前
    guess = list[mid] # list 是一个 列表 取列表的值 只能是 整数int 类型 现在 你的mid 是 4.0    
    ​​​​​​​                  #4.0 是 float 类型  所以 你报错了 可以用 int(mid) 把 float 转成 int
    点赞 评论 复制链接分享

相关推荐