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

简答题

38.商超采用会员制,客户的消费信息如会员号、姓名和积分如下表所示,小方的爸爸想编写一个客户信息管理系统,其中有一个功能是:输入会员号,查询该会员的积分。
小方知道后,就跃跃欲试,他首先从数据库读取客户信息到列表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('该会员号不正确')

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

答案:

1. ①处应填:i2. ②处应填:d[m][0] == key3. ③处应填:bin_search(data, key)

解析:

【喵呜刷题小喵解析】:

首先,对于冒泡排序(Bubble Sort),它是通过相邻元素的比较和交换,将最大的元素“冒泡”到数组的最后,依此类推,直到整个数组排序完成。对于此题目,我们需要将数组按照会员号升序排序,因此,内部循环应该从`len(d)-1`递减到`1`,即`range(len(d)-1, i, -1)`。所以,①处应填`i`。

接下来,对于二分查找(Binary Search),它是一种在有序数组中查找特定元素的搜索算法。它首先比较数组中间的元素与目标值,如果中间元素正好是要查找的元素,则查找过程结束;如果目标值小于或大于中间元素,则在数组的小于或大于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果数组中没有这样的元素,则查找过程结束。根据题目,我们需要在排序后的数组中查找特定会员号对应的积分,因此,我们可以使用二分查找。对于②处,应填`d[m][0] == key`。

最后,我们需要调用`bin_search`函数来查找特定会员号对应的积分。所以,③处应填`bin_search(data, key)`。

完整的代码应该是:

```python
def bubble_sort(d):
for i in range(len(d)-1):
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('该会员号不正确')
```
创作类型:
原创

本文链接:38.商超采用会员制,客户的消费信息如会员号、姓名和积分如下表所示,小方的爸爸想编写一个客户信息管理

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

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

分享考题
share