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

2022年6月电子学会青少年软件编程(Python四级)等级考试试卷
操作/编程 四级 2022 2022-11-03 16:11:54 91

一、编程题

1.

字符加密。将大写字母逐个按其ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数。如明文是"CIE",加密后的密文是"434945"。编写的python程序如下,完善划线处的代码。 

def xtob(n): #将整数转为二进制数 

    if n <= 1: 

        return str(n) 

    return  xtob(n//2)+  ①   

mingwen = "CIE" 

he = '0123456789ABCDEF' 

rst = '' 

for c in mingwen:

   s = "0" + xtob(ord(c)) #将明文转为8位二进制数 

   i = 0 

   data = 0

   while i < 8:

      data =data * 2 +  ②  

      if (i + 1) % 4 == 0: 

          rst = rst + he[data] 

          data = 0 

         ③   

print('密文是:',rst)

2.

下面的程序运用分治算法寻找列表中的最大值。请将空格补全代码。

#子问题规模小于或等于2时

def zui_da_zhi(a_list):

    if   ①   :

        if a_list[0]>=a_list[1]:

            most=a_list[0]

        else:

            most=a_list[1]

    else:

        most=a_list[0]

    return most

# 分治算法排序

def fen_zhi(init_list):

    n=len(init_list)

    if n<=2:                  #若问题规模小于或等于2,解决

        return zui_da_zhi(init_list)

    #分解(子问题规模为n/2)

    left_list,right_list=   ②   

    #递归,分治

    left_max,right_max=   ③   

    #合并

    return zui_da_zhi([left_max,right_max])


#测试数据

test_data=[12,25,4,47,69,5,4,6,37,89,21]

print('最大值为:',fen_zhi(test_data))

3.

辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。

def gcd(a,b):

    m=a%b

    if m==0:

        return      ①     

    else:

        a=b

            ②      

        return       ③     

print(gcd(12,18)) 

公众号
客服 反馈
顶部