当前位置:首页>python>真题解析/GESP9月认证Python三级真题回顾

真题解析/GESP9月认证Python三级真题回顾

  • 2026-09-16 09:18:29
真题解析/GESP9月认证Python三级真题回顾

点击上方蓝字·关注我们

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。

    本次为大家带来的是2023年9月份Python三级认证真题解析。

2023年GESP9月认证Python三级试卷解析

一、单选题(每题2分,共30分)

题号

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

答案

B

B

C

D

D

D

C

A

A

B

C

B

B

B

C

1.⼈们所使用的手机上安装的App通常指的是( )。

A.一款操作系统

B.一款应用软件

C.一种通话设备

D.以上都不对

【答案】B

【解析】本题属于考察计算机基础知识。APP是Application的缩写,通常指的是应用程序。在计算机领域,APP是指一种可以在特定操作系统上运行的软件程序,它为用户提供了特定的功能和服务。例如,手机上的微信、支付宝等应用就是APP。故正确答案为B选项。

2.下列流程图的输出结果是( )。

A. 60

B. 20

C. 5

D. 1

【答案】B

【解析】本题属于考察流程图的知识。该流程图主要进行条件判断,当a≥4时,执行s=s×a,a=a-1。否则,输出s。该流程图执行两次,分别是a=5和a=4,所以s=1×5×4。故正确答案为B选项。

3.已知大写字符'A'的ASCII编码的十六进制表示为0x41,则字符'L'的ASCII编码的十六进制表示为()。

A. 4A

B. 4B

C. 4C

D. 52

【答案】C

【解析】本题属于考察进制转换的知识。十六进制是一种基数为16的计数系统,它使用16个不同的符号来表示数值,包括0到9的数字和A到F的字母。在Python中使用一个以0x开头的数字时,Python会自动将其视为十六进制数。

当A为41时,按照26个英文字母顺序,L就是4C。故正确答案为C选项。

4.下面有关Python的dict类型key(键)的说法,正确的是( )。

A. dict类型的key可以是list数据

B. dict类型的key可以是set数据

C. dict类型的key可以是dict数据

D. dict类型的key可以是tuple数据

【答案】D

【解析】本题属于考察Python字典键值对基本格式的知识。在Python中,字典(dict)是一种可变的、无序的、键值对(key-value)集合。字典中的键(key)是唯一的,用于标识字典中存储的值(value)。字典的键可以是任何不可变的数据类型,如字符串、数字或元组。故正确答案为D选项。

5.下面Python赋值语句,不正确的是( )。

A. a = [12, 12]

B. b = (12, 12)

C. c = {12, 12}

D. 以上没有不正确

【答案】D

【解析】本题属于考察Python赋值和列表、集合、元组的基本应用的知识。在Python中,集合是一个无序的、不重复的元素序列。当我们创建一个集合时,如果其中存在重复的数据,那么这些重复的数据会被自动去重,只保留一个。程序不会报错。A选项为列表,B选项为元组,C选项为集合。故正确答案为D选项。

6.有关下面Python代码的描述,正确的是( )。

A.上述代码执行将报错

B.加号运算符不适用tuple类型

C.tuple是不可更改类型,不能切⽚(slice)操作

D.输出结果是(2, 3, 4, 5)

【答案】D

【解析】本题属于考察Python元组的基本应用的知识。在Python中,元组(tuple)是Python中的一种不可变序列类型。可以使用索引访问元组中的元素,索引从0开始,可以结合切片操作获取元组中的子序列。切片操作的两个操作数均为可选。如果缺少第一个操作数,则从起始处开始切片。如果缺少第二个操作数,则切片持续到末尾。切片操作的起始索引是包含的,而结束索引是不包含的。例如,my_tuple[1:4]表示从索引1开始,到索引4之前的所有元素。故正确答案为D选项。

7.下列Python赋值语句错误的是( )。

A. a = [1, 2] + [3, 4]

B. b = (1, 2) + (3, 4)

C. c = {1, 2} + {3, 4}

D. d = "1, 2" + "3, 4"

【答案】C

【解析】本题属于考察Python列表、集合、元组和字符串拼接的知识。在Python中,集合是一个无序的、不重复的元素序列,通过set()函数创建。按set特征,重复会自动清除保留一个。使用时会抛出TypeError异常。如果需要合并两个集合,可以使用集合的update()函数或者union()函数来实现。故正确答案为C选项。

8.下面Python代码执行后的输出是( )。

A. [],[13, 14]

B. [13, 14],[]

C. [13, 14],[13, 14]

D. [],[]

【答案】A

【解析】本题属于考察Python列表切片的知识。列表切片是Python中对列表进行部分提取的一种函数,它可以让我们从列表中获取一部分元素。切片操作的语法是list[start:end],其中start表示起始索引,end表示结束索引(end不包含在切片结果中)。切片操作会返回一个新的列表,包含从start到end-1的元素。如果省略start,则默认从列表开头开始;如果省略end,则默认切到列表末尾。索引可以是负数,表示从列表末尾开始计数。例如,my_list[-1]表示获取列表的最后一个元素。如果切片操作中的start大于end,或者省略了start和end,则会返回一个空列表。例如,my_list[:0]或my_list[::]都会返回一个空列表。故正确答案为A选项。

9.下面Python代码执行后的输出是( )。

A. ['1', 'A', 'x']

B. ['1', 'x', 'A']

C. "1Ax"

D. "A1x"

【答案】A

【解析】本题属于考察Python内置函数sorted()函数的知识。sorted()是Python中的一个内置函数,用于对可迭代对象进行排序。它会返回一个新的已排序的列表,而不会修改原始的可迭代对象。默认情况下,sorted()函数会按照元素的升序进行排序。如果需要降序排序,可以设置参数reverse=True。字符串的排序顺序是按照字符的Unicode编码值进行排序的。对于ASCII码范围内的字符(即0-127),其排序顺序与ASCII码表的顺序相同。在ASCII中,数字小于大写字母,大写字母小于小写字母。1,A,x的ASCI码分别为49,65,120。故正确答案为A选项。

10.下面Python代码执行后的输出是( )。

A. [8, 7, 6, 5, 4, -3, 3, -2, 2]

B. [8, 7, 6, 5, 4, -3, 3, 2, -2]

C. [2, -2, -3, 3, 4, 5, 6, 7, 8]

D. [-2, 2, -3, 3, 4, 5, 6, 7, 8]

【答案】B

【解析】本题属于考察Python内置函数sort()函数和abs()函数的知识。sort()函数是Python中的一个内置函数。默认情况下,sort()函数会按照元素的升序进行排序。sort函数还有两个可选参数:key和reverse,key在使用时必须提供一个排序过程总调用的函数,如果需要降序排序,可以设置参数reverse=True。abs()是Python中的一个内置函数,用于计算数字的绝对值。它接受一个数字作为参数,并返回该数字的绝对值。所以本题是降序排列的,当遇到相同数据时,sort()函数排序是稳定排序,即如果排序值相同,则维持原顺序不变,在前仍在前,会根据元素从左到右出现顺序进行排序。故正确答案为B选项。

11.下面Python代码执行后的输出是( )。

A. 'P'

B. 'p'

C. {'P'}

D. {'p'}

【答案】C

【解析】本题属于考察Python集合基本应用差集的知识。在Python中,可以使用“-”运算符来计算集合的差集。所有属于A且不属于B的元素构成的集合,叫做集合A与集合B的差集。故正确答案为C选项。

12.某机构职工编码规则是“入职年份顺序码”,其中入职年份为2位数,顺序码3位数表示入职顺序。下面代码要求输入职工编码,并在输入大写字母Q时结束输入,要求输出每个年份入职⼈数,应在横线填入代码是( )。

A. statData[Year] += statData.get(Year) + 1

B. statData[Year] = statData.get(Year, 0) + 1

C. statData[Year] = statData.get(Year, None) + 1

D. statData[Year] += 1

【答案】B

【解析】本题属于考察Python字典中get()函数和字符串切片的知识。字典get()函数是Python中的一个内置函数,用于从字典中获取指定键对应的值。如果键不存在于字典中,那么返回一个默认值。get()接受两个参数,第一个参数是要查找的键,第二个参数是可选的默认值,当键不存在时返回该默认值。题目要求入职年份为2位数,顺序码3位数表示入职顺序,形如“23001”的格式。输出每个年份入职人数,所以正确答案为B选项。

13.Python表达式 [x for  x  in  range(2,20)  if  x  %  3  and  x  %  5  ==  0] 的值是( )。

A. [15]

B. [5, 10]

C. [2, 4, 7, 8, 11, 13, 14, 16, 17, 19]

D. [3, 6, 9, 12, 18]

【答案】B

【解析】本题属于考察Python列表推导式的基本应用。该推导式是得到2到19中不能被3整除,但是能被5整除的数组成的列表。故正确答案为B选项。

14.下面Python代码用于实现十进制到M进制(M为二进制到十六进制)的转换,横线处应填入代码是 ( )。

A. rst += Alpha[Remainder]

B. rst = Alpha[Remainder] + rst

C. rst = rst + Alpha[Remainder]

D. rst = str(Remainder) + rst

【答案】B

【解析】本题属于考察Python进制转换的知识。十进制转N进制的规则是将一个十进制数采用辗转相除法除以N,然后将余数倒序排列。这个过程一直持续到商为0为止。最后得到的余数序列就是对应的二进制表示。因为是倒叙排列,所以是先得到当前余数对应的字符,再拼接之前得到的字符和rst,故正确答案为B选项。

15.下面Python代码实现字符串乱序【随机打乱】,横线处应填入代码 ( )。

A. key = random.random

B. key = lambda x:random.random(x)

C. key = lambda x:random.random()

D. key = lambda x:random.random

【答案】C

【解析】本题属于考察Python内置函数sort( )函数,匿名函数lambda,list( )函数和random( )函数知识的结合使用。lambda函数的语法如下:lambda参数列表:表达式。sort()函数会按照元素的升序进行排序。sort( )函数还有两个可选参数:key和reverse,key在使用时必须提供一个排序过程总调用的函数。random()函数是Python中的一个内置函数,用于生成一个0到1之间的随机浮点数,无参数。每次得到不一样的结果。故正确答案为C选项。

二、判断题(每题2分,共20分)

题号

1

2

3

4

5

6

7

8

9

10

答案

√

×

×

×

×

√

×

√

×

×

1.我们常说的互联网(Internet)是一个覆盖全球的广域网络,它不属于任何一个国家。

【答案】正确√

【解析】本题考察计算机网络的基本知识。互联网,又称国际网络,指的是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。互联网是全球性的。这就意味着这个网络不管是谁发明了它,是属于全人类的。所以本题正确。

2.二进制数101.101在十进制下是5.005。

【答案】错误×

【解析】本题考察进制转换的知识。整数的二进制转化为十进制数,从二进制数的右边第一位起,从右往左,先用二制位置上的数乘以2的相应位数的幂,然后把每一位的乘积相加即可得到二进制数对应的十进制数。小数二进制转化为十进制数,从小数点后第一位上的二进制数字乘以2的负一次方加上第二位上的二进制数字乘以2的负二次方,以此类推第n位上的二进制数字乘以2的负n次方。1×22+0×21+1×20+1×2-1+0×2-2+1×2-3=5.625。所以本题错误。

3. Python内置函数len()对list、tuple和str有效,对set和dict无效。

【答案】错误×

【解析】本题考察Python内置函数len( )函数的基本知识。len( )函数是Python中的一个内置函数,用于获取对象的长度。它可以对以下类型的对象进行操作:1.字符串(str):返回字符串中字符的个数。2.列表(list):返回列表中元素的个数。3.元组(tuple):返回元组中元素的个数。4.字典(dict):返回字典中键值对的个数。5.集合(set):返回集合中元素的个数。所以本题错误。

4. Python表达式len(set("12,34,56"))的值为3。

【答案】错误×

【解析】本题考察Python内置函数set( )函数和len( )函数的基本知识。set()函数用于创建一个无序且不重复的元素集合。当我们将字符串放入set()函数时,它会将字符串中的每个字符视为独立的元素,并将它们添加到集合中。所以是{'1', '2', ',', '3', '4', '5', '6'}。len( )函数是Python中的一个内置函数,用于获取对象的长度。最后值为7。所以本题错误。

5. Python表达式2&3的值为5.

【答案】错误×

【解析】本题考察Python位运算与(&)的知识。&(按位与)对应二进制下的AND操作,如果两个相应的二进制位都为1,则该位的结果为1,否则为0。2的二进制是0010,3的二进制是0011。0010&0011结果是0010,转为十进制是2。所以本题错误。

6.执行Python代码print("李白".replace("白","杜"))后将输出"李杜"。

【答案】正确√

【解析】本题考察Python内置函数print( )函数和replace( )函数的基本知识。在Python中,replace()是一个字符串方法,用于将字符串中的某个子串替换为另一个子串。它接受两个参数,第一个参数是要被替换的子串,第二个参数是替换后的子串。所以本题正确。

7.执行Python代码print(list(filter(lambda n:n%5,range(10))))后将输出[0, 5]。

【答案】错误×

【解析】本题考察Python内置函数list( )函数、filter( )函数、range( )函数和匿名函数lambda的基本知识。filter()函数接受一个匿名函数和一个可迭代对象range(10)作为参数,并生成一个满足条件对5取余不为0的元素组成的迭代器。然后使用list()函数返回由符合条件元素组成的新列表。结果为[1,2,3,4,6,7,8,9]。所以本题错误。

8.执行Python代码print([i for i in range(10) if i % 5 == 0])后将输出[0, 5]。

【答案】正确√

【解析】本题考察Python列表推导式的知识。本题输出0到9之间能被5整除的数字,所以本题正确。

9.下面Python代码执行时输入10,20后将输出30。

【答案】错误×

【解析】本题考察Python内置函数input( )函数,split( )函数和列表拼接的基本知识。split( )是Python中的一个字符串方法,结合使用用于将一个字符串按照指定的分隔符进行输入多个数据。input()函数返回值是string类型,输出为1020。所以本题错误。

10.在Python代码中先执行a = (5,6,3,10),然后执行print(a.sort())其输出结果是None。

【答案】错误×

【解析】本题考察Python元组和内置函数sort( )函数的知识。元组不能使用sort()函数,sort()函数只能对列表进行排序,不能对元组、集合等其他类型的序列进行排序。如果需要对其他类型的序列进行排序,可以先将其转换为列表,然后使用sort()函数进行排序。所以本题错误。

三、编程题(每题25分,共50分)

题号

1

2

答案




1、小杨的储蓄

【问题描述】

小杨共有N个储蓄罐,编号从0到N-1。从第1天开始,小杨每天都会往存钱罐里存钱。具体来说,第i天他会挑选一个存钱罐,并存入i元钱。过了D天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?

【输入描述】

输入2行,第一行两个整数N,D;第二行D个整数,其中第i个整数为(保证0≤≤N-1)。每行的各个整数之间用单个空格分隔。

保证1≤N≤1000;1≤D≤1000

【输出描述】

输出个用单个空格隔开的整数,其中第i个整数表示编号为i-1的存钱罐中有多少钱(i=1,...,N)。

【样例输入1】

2 3

0 1 0

【样例输出1】

4 2

【样例输入2】

3 5

0 0 0 2 0

【样例输出2】

11 0 4

【题目大意】

小杨有N个存钱罐,存了D天(第一行输入数据),每天会选择其中一个存钱罐(第二行输入的数据就是D个数据,第i个数据就是第i天选择的是第几个存钱罐)存入第i天的i元钱。问最终N个存钱罐,每个存钱罐里面有多少元(输出的N个数据)。

【解题思路】

本题主要考察内置函数和列表推导式的知识:

1.输入两个数据n,d,单个空格分隔,使用split()函数,使用map()函数将其转换为整数;

2.输入D个数据,通过map()函数将每个数据转换为int类型,并使用list()函数转为列表,赋值给x;

3.使用一个列表推导式,创建一个包含n个元素的列表arr,存储存钱罐对应的总钱数。其中每个元素都初始化为0;

4.遍历d,将对应的i作为x列表的索引值,找到对应的天数对应的罐子编号,将编号传入arr列表,作为索引值。将i+1存入对应的位置(因为range()函数是从0开始遍历,所以是i+1);

5.将arr列表中的每个元素通过map()函数转为str类型,使用join()函数转为以空格连接的字符串。

【参考程序】

2、进制判断

【问题描述】

N进制数指的是逢N进一的计数制。例如,⼈们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母A至F表示十至十五)。

现在有N个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如,15A6F就只可能是十六进制,而1011则是四种进制皆有可能。

【输入描述】

输入的第一行为一个十进制表示的整数N。接下来N行,每行一个字符串,表示需要判断的数。保证所有字符串均由数字和大写字母组成,且不以0开头。保证不会出现空行。

保证1≤N≤1000,保证所有字符串长度不超过10。

【输出描述】

输出N行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用1表示可能,使用0表示不可能。

例如,对于只可能是十六进制数的15A6F,就需要输出0001;而对于四者皆有可能的1011,则需要输出1111。

【样例输入1】

2

15A6F

1011

【样例输出1】

0 0  0  1

1 1  1  1

【样例输入2】

4

1234567

12345678

FF

GG

【样例输出2】

0 1  1  1

0 0  1  1

0 0  0  1

0 0  0  0

【题目大意】

先输入数字N,表示接下来要输入N行数据,判断这些数据是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用1表示可能,使用0表示不可能。输出N行判断结果。

【解题思路】

本题主要考察内置函数,列表和字符串函数的知识:

1.通过input()输入n,使用int()函数转为int类型;

2.通过for...in...循环去实现输入n个数据,命名为st;

3.使用strip()函数,得到具体数据;

4.设置临时最大值max_bit,赋值为‘0’;

5.遍历st,将st字符中的最大字符赋值给max_bit;

6.设置一个answer列表,列表项分别判断是否大于对应进制的最大数值。最后输出判断结果。

【参考程序】

END

GESP 12月认证 

01
认证语言
C++/Python/图形化编程
02
报名及缴费时间
2023年10月19日至11月30日24点截止
03
认证时间

1-4级   2023年12月9日   上午9:30-11:30

5-8级   2023年12月9日   下午13:30-16:30

04
认证方式
全国统一线下机考
05
报名方式

登录GESP官网(https://gesp.ccf.org.cn/)进行报名

联系方式

1. GESP微信:关注“CCF GESP”公众号,将问题以文字方式留言即可得到回复。

2. GESP邮箱:gesp@ccf.org.cn

注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证号,以便及时有效处理。

3. GESP电话:0512-67656856

咨询时间:周一至周五(法定节假日除外)

                上午 8:30-12:00;下午 13:00-17:30

扫码关注GESP公众号,了解更多咨询

直播合作媒体:蔻享学术

最新文章

随机文章