image

编辑人: 青衫烟雨

calendar2025-06-01

message2

visits711

2023月05月Python五级实操答案及解析

一、编程题

1、36.已知 IPv6 的地址字符串的格式为 X:X:X:X:X:X:X:X,其中每个 X 表示长度为 4 的字符串。例如:某 IPv6 字符串为“2A08:CCD6:0088:108A:0011:0002:202F:AA05”,IPv6 表示法需将每个 X 的前导零都省略,程序输出结果如下图所示:
现设计程序自动删除 IPv6 地址的前导零,请在划线处填入合适的代码。
s="2A08:CCD6:0088:108A:0011:0002:202F:AA05"
​ ①
flag=False
for i in range(len(s)):
​ if s[i]==":":
​ ②
​ flag=False
​ elif ③ :
​ ans+=s[i]
​ flag=True
print("原 IPv6 地址为:",s)
print("去前导零后:",ans)

参考答案:```pythons="2A08:CCD6:0088:108A:0011:0002:202F:AA05"ans=""flag=Falsefor i in range(len(s)):if s[i]==":":flag=Falseelif not flag:ans+=s[i]flag=Trueprint("原 IPv6 地址为:",s)print("去前导零后:",ans)```

解析:【喵呜刷题小喵解析】:

题目要求设计一个程序,自动删除IPv6地址的前导零。IPv6地址由8个长度为4的字符串组成,字符串之间用冒号分隔。

首先,我们定义一个字符串变量`s`,用于存储输入的IPv6地址。

然后,我们定义一个空字符串`ans`,用于存储去前导零后的IPv6地址。

接着,我们定义一个布尔变量`flag`,用于标记当前是否正在处理前导零。初始值为`False`。

然后,我们使用一个for循环遍历字符串`s`的每个字符。

在循环中,我们首先检查当前字符是否是冒号。如果是,说明已经遍历完一个长度为4的字符串,我们将`flag`设置为`False`,表示下一个字符可能是前导零。

如果当前字符不是冒号,我们检查`flag`的值。如果`flag`为`False`,说明当前字符可能是前导零,我们将其添加到`ans`中,并将`flag`设置为`True`。

最后,我们输出原始IPv6地址和去前导零后的IPv6地址。

注意,在题目中,给出的代码存在错误,如`flag=False`应该放在循环外面,`ans+=s[i]`前需要初始化`ans`为空字符串等。修正后的代码如上述所示。

2、37.编写程序,实现分段函数的计算,分段函数的取值如下表所示。要求:可连续输入5次(也就是输入5个x值,求出对应的y值),根据对应的表达式求出y值之后,将结果转化成整数添加到列表a中。请判断存在于列表a中的5个元素是否为素数,如果为非素数则转化成元组之后存在b1中,如果是素数则转换成元组之后存放在b2中,分别输出b1、b2中非素数和素数的元素及元素个数。
a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
​ x=int(input("输入x="))
​ if x<0:
​ y=0
​ elif 0<=x<5:
​ y=x
​ elif 5<=x<10:
​ y=3*x-5
​ elif 10<=x<20:
​ y=0.5*x-2
​ elif x>=20:
​ y=2*x
​ ①
for i in a:
​ if ② :
​ a1.append(i)
​ else:
​ flag=True
​ for j in range(2,i):
​ if i%j==0:
​ ③
​ break
​ if ④ :
​ a2.append(i)
​ else:
​ a1.append(i)
b1=tuple(a1)
b2=tuple(a2)
print("非素数的个数有"+str(len(b1))+"个,","非素数为:",b1)
print("素数的个数有"+str(len(b2))+"个,","素数为:",b2)

参考答案:```pythona = []a1 = [] # 暂时存储非素数的值a2 = [] # 暂时存储素数的值b1 = ()b2 = ()for i in range(5):x = int(input("输入x="))if x < 0:y = 0elif 0 <= x < 5:y = xelif 5 <= x < 10:y = 3 * x - 5elif 10 <= x < 20:y = 0.5 * x - 2elif x >= 20:y = 2 * xa.append(int(y))for i in a:if i < 2:a1.append(i)else:flag = Truefor j in range(2, i):if i % j == 0:flag = Falsebreakif flag:a2.append(i)else:a1.append(i)b1 = tuple(a1)b2 = tuple(a2)print("非素数的个数有" + str(len(b1)) + "个,", "非素数为:", b1)print("素数的个数有" + str(len(b2)) + "个,", "素数为:", b2)```

解析:【喵呜刷题小喵解析】:

首先,根据题目要求,我们需要编写一个程序来计算分段函数的值,并将结果存入列表a中。然后,我们需要判断列表a中的元素是否为素数,并将非素数和素数分别存入列表a1和a2中。最后,将列表a1和a2转换为元组,并输出非素数和素数的个数及对应的元素。

在程序中,我们首先定义了三个空列表a、a1和a2,以及两个空元组b1和b2。然后,使用for循环输入5个x值,并根据分段函数的定义计算对应的y值,将y值存入列表a中。

接下来,我们使用for循环遍历列表a中的元素,对于每个元素,首先判断是否为非素数(即小于2),如果是,则直接存入列表a1中。否则,我们使用一个内部循环来判断该元素是否为素数,如果是素数,则存入列表a2中,否则存入列表a1中。

最后,我们将列表a1和a2转换为元组,并输出非素数和素数的个数及对应的元素。

需要注意的是,在判断素数时,我们使用了一个内部循环来遍历从2到该元素的所有整数,如果该元素能够被其中的任何一个整数整除,则说明该元素不是素数。因此,在判断素数时,我们使用了flag变量来记录是否找到能够整除该元素的整数,如果找到了,则说明该元素不是素数。

3、38.给定一个完全由数字字符('0','1','2',...,'9')构成的字符串str,请写出str的p型编码串。例如:字符串1335554668可被描述为“1个1、2个3、3个5、1个4、2个6、1个8”,因此我们说1335554668的p型编码串为112335142618;00000000000可描述为“11个0”,因此它的p型编码串为110;类似的道理,编码串101可以用来描述1111111111;110003444225可描述为“2个1、3个0、1个3、3个4、2个2、1个5”,因此它的p型编码串为213013342215。如果输入非数字字符,则提示输入无效。根据上述算法思想,补全下列代码。s=input("请输入字符串str:")s+=' 'lens=len(s)for i in range(0, ① ,1): if '0'<=s[i]<='9': ② else: print('输入无效!') exit()sum=1i=0while i if ③ : sum+=1 else: print(sum,end='') print(s[i],end='') ④ i+=1

参考答案:① range(0, lens, 1)② count = s[i]③ s[i] >= '0' and s[i] <= '9'④ i < lens

解析:【喵呜刷题小喵解析】:

1. 首先,我们根据题目描述,知道p型编码串是将字符串中的每个数字字符及其出现的次数表示出来。例如,字符串"1335554668"可以表示为"1个1、2个3、3个5、1个4、2个6、1个8"。
2. 在给出的代码中,首先通过`input`函数获取用户输入的字符串`str`,然后获取其长度`lens`。
3. 使用`for`循环遍历字符串`str`中的每个字符,对于每个字符,检查其是否为数字字符('0'到'9')。
4. 如果字符是数字字符,则初始化一个计数器`count`,其值为该字符,然后使用`while`循环遍历字符串`str`中从当前字符开始的所有相同字符,每次循环将计数器`count`加1。
5. 如果在遍历过程中遇到非数字字符,则输出已经计算出的数字字符及其出现次数,并继续处理下一个字符。
6. 根据上述逻辑,我们可以补全代码中的①、②、③、④部分。


* ①处,使用`range(0, lens, 1)`表示从索引0开始,到字符串长度`lens`结束,步长为1,即遍历整个字符串。
* ②处,将当前字符赋值给计数器`count`。
* ③处,检查当前字符是否为数字字符,即`s[i] >= '0' and s[i] <= '9'`。
* ④处,使用`i < lens`作为`while`循环的条件,表示继续遍历直到字符串结束。

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

创作类型:
原创

本文链接:2023月05月Python五级实操答案及解析

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