刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

36.学校图书馆为了方便查找管理书籍,给每本书编写了号码,[8,9,10,12,13,14,16,17,25,27],输入号码提示这本书号码排第几。例如:输入12,输出:要查找的书号12排第4 。请完善程序:lst=[8,9,10,12,13,14,16,17,25,27] hm=int(input('请输入书本号码')) ① i,j=0,n-1 b=-1 while ② : m=(i+j)//2 if ③ : b=m break elif hm>lst[m]: ④ else: j=m-1 if b==-1: print('要查找的书号['+str(hm)+']不在列表lst中。') else: print('要查找的书号['+str(hm)+']排第'+ ⑤ )

使用微信搜索喵呜刷题,轻松应对考试!

答案:

① n=len(lst)② i<=j③ hm==lst[m]④ i=m+1⑤ str(n-m))

解析:

【喵呜刷题小喵解析】:
这个程序的目标是在给定的书号码列表(lst)中查找特定的书号码(hm),并返回它在列表中的位置。

① 在开始查找之前,我们需要知道列表的长度,所以我们需要添加一行代码:n=len(lst)。

② 查找的过程通常使用二分查找算法,其条件是当i(开始位置)小于等于j(结束位置)时,继续查找。

③ 在中间位置m,我们需要检查hm是否等于lst[m]。如果等于,那么hm就在列表中找到,并且它的位置是m。

④ 如果hm大于lst[m],那么hm肯定在m的右侧,所以我们需要更新i=m+1。

⑤ 如果hm小于lst[m],那么hm在m的左侧,或者hm不在列表中,所以我们需要更新j=m-1。

⑥ 如果hm不在列表中,我们需要打印出“要查找的书号[hm]不在列表lst中。”的信息。

⑦ 如果hm在列表中,我们需要打印出“要查找的书号[hm]排第[n-m]”的信息,其中n是列表的长度,m是hm在列表中的位置。注意,列表的索引是从0开始的,所以我们需要用n-m来得到hm在列表中的位置。
创作类型:
原创

本文链接:36.学校图书馆为了方便查找管理书籍,给每本书编写了号码,[8,9,10,12,13,14,16,1

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share