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

A39980. 商超采用会员制, 客户的消费信息如会员号、 姓名和积分如下表所示, 小方的爸爸想编写一个客户信息管理系统, 其中有一个功能是: 输入会员号, 查询该会员的积分。小方知道后, 就跃跃欲试, 他首先从数据库读取客户信息到列表 data 中, 其中 data[i][0]存储第 i 条记录的会员号, data[i][1]存储第 i 条记录的姓名,data[i][2]存储第 i 条记录的积分; 他首先将数…

填空题 困难

题目描述

商超采用会员制, 客户的消费信息如会员号、 姓名和积分如下表所示, 小方的爸爸想编写一个客户信息管理系统, 其中有一个功能是: 输入会员号, 查询该会员的积分。

小方知道后, 就跃跃欲试, 他首先从数据库读取客户信息到列表 data 中, 其中 data[i][0]存储第 i 条记录的会员号, data[i][1]存储第 i 条记录的姓名,data[i][2]存储第 i 条记录的积分; 他首先将数组 data 中数据按会员号升序排序, 然后用二分查找算法查找会员号对应的积分信息。 代码如下, 完善划线处的代码:

def bubble_sort(d):

    for i in range(len(d)-2):

        for j in range(len(d)-1, ① ,-1):

            if d[j][0] < d[j-1][0]:

                d[j],d[j-1] = d[j-1],d[j]

def bin_ search(d, key):

    i,j = 0, len(d)-1

    while i <= j:

        m=(i +j)//2

        if ② :

            return m

        if key > d[m][0]:

            i = m+1

        else:

            j = m-1

    return -1

#从数据库读取会员信息存列表 data 中, 代码略

data = [[8011, '张飞', 12345], [8012, '李强', 34512], [7812, '李好', 45321]]

bubble_sort(data)

key = int(input('输入会员号:'))

m = ③

if m != -1:

    print(data[m][1], '先生/女士:您的积分是:', data[m][2])

else:

    print('该会员号不正确')

参考答案

def bubble_sort(d): for i in range(len(d)-2): for j in range(len(d)-1, i ,-1): if d[j][0] < d[j-1][0]: d[j],d[j-1] = d[j-1],d[j] def bin_ search(d, key): i,j = 0, len(d)-1 while i <= j: m=(i +j)//2 if d[m][0] == key : return m if key > d[m][0]: i = m+1 else: j = m-1 return -1 #从数据库读取会员信息存列表 data 中, 代码略 data = [[8011, '张飞', 12345], [8012, '李强', 34512], [7812, '李好', 45321]] bubble_sort(data) key = int(input('输入会员号:')) m = bin_search(data,key) if m != -1: print(data[m][1], '先生/女士:您的积分是:', data[m][2]) else: print('该会员号不正确')​

答案解析

评分标准:

(1) i; (2 分)

(2) d[m][0] == key; (3 分)

(3) bin_search(data,key)。 (3 分)

上一题 下一题