测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38134. 新学期到了, 学校接收了一批捐赠的图书, 小明编写了一个简单的程序用来管理图书, 并支持借阅功能。 为了提高查找图书的效率, 小明使用了二分查找法来设计图书借阅功能。以下是小明编写的图书借阅管理程序, 请你补全代码。library=dict() #用字典生成一个图书管理数据结构(字典的键为编号, 字典的值为[' 书名' , 本数])#书籍入库nums=len(library) #先计算图书编号总…

填空题 中等

题目描述

新学期到了, 学校接收了一批捐赠的图书, 小明编写了一个简单的程序用来管理图书, 并支持借阅功能。 为了提高查找图书的效率, 小明使用了二分查找法来设计图书借阅功能。以下是小明编写的图书借阅管理程序, 请你补全代码。

library=dict() #用字典生成一个图书管理数据结构(字典的键为编

号, 字典的值为[' 书名' , 本数])

#书籍入库

nums=len(library) #先计算图书编号总数

library[nums+1]=[' 红楼梦' , 5] #在编号总数的基础上继续添加新书:

library[新编号]=[' 书名' , 本数]

library[nums+2]=[' 西游记' , 10]

library[nums+3]=[' 水浒传' , 5]

library[nums+4]=[' 三国演义' , 10]

print(library)

blist=list(library. keys() )

#按书名借阅:

bookname=input(' 请输入借阅图书名称: ' )

min_v = blist[0]

max_v = blist[-1]

turns=0

while min_v <= ____① ____:

    turns += 1

    cur = (min_v + max_v) ____② ____

    print(cur)

    if library[cur][0] == ____③ ____:

        if library[cur][1] > 0:

            library[cur][1] -= ____④ ____

            print(' 《%s》 借阅成功! ' %bookname)

        else:

            print(' 抱歉, 您选择的书籍已被借完! ' )

        break

    elif blist[cur-1] > cur:

        min_v = ____⑤ ____

    else:

        max_v = ____⑥ ____

print("经过%d 轮二分查找, 完成图书的搜索。 "%turns)

参考答案

#学校图书管理系统 library=dict() #用字典生成一个图书管理数据结构(字典的键为编号, 字典的值为 ['书名',本数]) #书籍入库 nums=len(library) #先计算图书编号总数 library[nums+1]=['红楼梦',5] #在编号总数的基础上继续添加新书: library[新编号]=['书名 ',本数] library[nums+2]=['西游记',10] library[nums+3]=['水浒传',5] library[nums+4]=['三国演义',10] print(library) blist=list(library.keys()) #按书名借阅: bookname=input('请输入借阅图书名称: ') min_v = blist[0] max_v = blist[-1] turns=0 while min_v <= max_v: turns += 1 cur = (min_v + max_v) // 2 print(cur) if library[cur][0]==bookname: if library[cur][1] > 0: library[cur][1] -= 1 print('《%s》 借阅成功!'%bookname) else: print('抱歉, 您选择的书籍已被借完! ') break elif blist[cur -1] > cur: min_v = cur +1 else: max_v = cur -1 print("经过%d 轮二分查找, 完成图书的搜索。 "%turns)

答案解析

评分标准:

(1) max_v; (2 分)

(2) // 2; (2 分)

(3) bookname; (3 分)

(4) 1; (3 分)

(5) cur +1; (3 分)

(6) cur -1。 (3 分)

上一题 下一题