image

编辑人: 流年絮语

calendar2025-05-13

message6

visits695

2022年06月Python四级实操答案及解析

一、编程题

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

参考答案:

解析:【喵呜刷题小喵解析】本题要求将大写字母按照特定规则进行加密,即将大写字母的ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数。根据题目要求,我们可以编写一个Python函数`encrypt`,输入为字符串`s`,输出为加密后的字符串。在函数内部,我们遍历输入字符串中的每个字符,如果该字符是大写字母,则执行以下操作:1. 将该字符的ASCII值转换为二进制数,得到7位二进制数。2. 在最左边补0,使得每个字母转换为8位二进制数。3. 将8位二进制数每四位转为十六进制数,得到对应的十六进制数。4. 将十六进制数添加到结果字符串中。如果字符不是大写字母,则直接添加到结果字符串中。最后,返回加密后的字符串。注意,在Python中,`bin()`函数可以将整数转换为二进制数,`int()`函数可以将二进制数转换为整数,`hex()`函数可以将整数转换为十六进制数。`zfill()`函数可以在字符串最左边补0,使得字符串长度达到指定长度。

2、37.辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。
def gcd(a,b):
m=a%b
if m==0:
return   ①
else:
a=b

return ③
print(gcd(12,18))

参考答案:

解析:【喵呜刷题小喵解析】:辗转相除法(又称欧几里得算法)是一种求两个正整数最大公约数的方法。它的基本思想是:用较大的数除以较小的数,再用出现的余数去除较小的数,如此反复,直到余数为零为止,此时较小的数即为两数的最大公约数。在给出的代码中,函数`gcd(a, b)`首先计算`a`除以`b`的余数`m`。如果`m`为0,说明`b`是`a`的倍数,所以`b`就是`a`和`b`的最大公约数,直接返回`b`。如果`m`不为0,说明`a`和`b`不是倍数关系,那么将`b`赋值给`a`,将`m`赋值给`b`,然后递归调用`gcd(a, b)`,直到余数为0为止。根据以上分析,我们可以完善代码中的横线处:1. ①处应返回`b`,表示当余数为0时,`b`即为最大公约数。2. ②处应将`b`赋值给`a`,`m`赋值给`b`,表示进入下一次递归。3. ③处应返回`gcd(a, b)`,表示递归调用`gcd`函数。

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

参考答案:

解析:【喵呜刷题小喵解析】这个题目要求使用分治算法来寻找列表中的最大值。分治算法是一种将大问题分解为小问题来求解的策略。在这个问题中,我们首先将列表一分为二,然后递归地找出每一半列表中的最大值,最后返回这两个最大值中的较大者。根据题目,我们需要补全一个Python函数,该函数接收一个列表作为输入,并返回列表中的最大值。函数名定义为`find_max`。在函数中,我们首先检查列表的长度。如果列表长度为0或1,则直接返回列表中的元素。否则,我们将列表一分为二,递归地调用`find_max`函数来找出每一半列表中的最大值,并返回这两个最大值中的较大者。具体的实现中,我们首先计算列表的中点`mid`,然后使用切片操作将列表分为左右两部分。接着,我们递归地调用`find_max`函数来找出左右两部分的最大值,分别存储在`left_max`和`right_max`变量中。最后,我们使用`max`函数返回两个最大值中的较大者。以上就是补全后的Python代码。通过递归地分治,我们可以在对数时间复杂度内找到列表中的最大值。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2022年06月Python四级实操答案及解析

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