万卷网> 电子学会考级 >Python等级考试 > 2023年3月电子学会青少年软件编程(Python四级)等级考试试卷

2023年3月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2023 2023-04-07 16:37:43 100

一、编程题

1.

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

小方知道后,就跃跃欲试,他首先从数据库读取客户信息到列表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('该会员号不正确')

2.

换位密码法是将明文中的字符位置通过一定的规则重新排列从而得到密文的一种加密方法。某换位密码法加密方法如下:先把明文按照固定长度(4位一组)进行分组,然后对每一组的字符进行换位操作,从而得到密文。例如, 字符串"ceit",使用密钥1432进行加密时,首先将字符串以 4 个字符为一组进行分组,然后对每组的字符进行换位,第1个和第3个字符位置不变,把第2个字符和第4个字符交换位置,从而得到密文"ctie"。小张编写的程序如下,请完善划线处的代码:

def jiami(yw,key):

    result = ''          

    for i in range(0,         ①       ,len(key)):

        s1=yw[i:i+ len(key) ]

        for j in range(        ②       ):

            result = result +        ③       

    return result

yw= input('请输入待加密的明文:')

key= input('请输入密钥:')

mw=        ④       

print(mw)

运行结果如下图所示:

3.

一张长方形的纸,长m米,宽n米(长宽均为整数),现在要把它刚好裁成一些正方形(边长是整数),有几种裁法,如果要使裁得的正方形面积最大,可以裁多少块。小明学习了递归后,编写程序如下,首先输入长方形的长和宽,计算出结果。请完善划线处的代码:

def tj(a,b):

    c = 0

    minn =        ①        

    if a > b:

        minn = b

    for i in range(1,minn+1):

        if a % i == 0 and b % i == 0:

            c =        ②        

    return c

def gcd(a,b):

    if b == 0:

        return a 

    return        ③        

chang = int(input('输入长方形的长 (单位cm)'))

kuan = int(input('输入长方形的宽 (单位cm)'))

bianchang = gcd(chang,kuan)

total =        ④        

num = tj(chang,kuan)

print('------------结果如下-------------')

print('有{}种裁法'.format(num))

print('裁得的正方形面积最大边长是{}cm,可以裁{}块'.format(bianchang,total))


运行后的结果如下图所示:

公众号
客服 反馈
顶部