当前位置:首页>python>CCF 2026年3月GESP认证python一级真题解析(非官方)

CCF 2026年3月GESP认证python一级真题解析(非官方)

  • 2026-09-02 19:55:01
CCF 2026年3月GESP认证python一级真题解析(非官方)

1 单选题(每题 2 分,共 30 分)

第 1 题 2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。

A. 用于检测重心的重力传感器

B. 预装的AI算法程序

C. 接收动作指令的遥控器

D. 拍摄其他机器人的摄像头

答案B

解析:计算机输入设备是用于将外部信息和指令传输到计算机内部的硬件设备。

A 传感器、C遥控器、D摄像头 将外部信息和指令传输到计算机内部的硬件设备

B 不是硬件设备

所以答案选B

第 2 题 小明学习编程有一段时间了,他想在图形环境下把当前目录(或文件夹)下的文本文件20260314.txt 的名字改一下。他用鼠标左键点击选中该文件后,立即完成下面哪个操作后将处于输入新文件名的状态 ( )。

A. 单击右键并选择弹出菜单中的“重命名”

B. 双击左键

C. 按功能键 F1

D. 按回车键

答案A

解析:

B双击左键为打开文件

C按功能键F2将处于输入新文件名的状态

D按回车键打开文件

第 3 题 有关下面Python的说法,正确的是( )。

PI = 3.1415926print(PI)

A. 为了方便初学者, print(PI) 和print(pi) 效果相同,即变量的大小写不敏感

B. print(PI) 修改为print(Pi) 能正常执行

C. 不能用 PI 做变量名,因为要保存圆周率这个常量

D. 将程序中 PI 全部改写为 Pai ,将能正常执行,不会报错

答案D

解析:A、B python是区分大小写的

         C、PI非python关键字,是可以作为变量名的,如圆周率常量需导入math库

          D、更换变量是可以的

易错题,容易选C

第 4 题 Python 表达式3 * 3 ** 2 的值为( )。

A. 81

B. 27

C. 24

D. 18

答案B

解析:等于3 * 32

第 5 题 下面的 Python 代码执行后,其输出是( )。

a, b = 3, 4print(a + 2, b - 2)print(a, b)

A.

5 23 4

B.

5 25 2

C.

5234

D.

5252

答案A

解析:a = 3, b  =  4

         a + 2 = 3 + 2 = 5

         b  - 2 =  4 - 2 = 2 

第 6 题 下面 Python 代码的相关说法,正确的是( )。

N = int(input())print(N)

A. 执行时如输入10,则将输出10

B. 执行时如输入3.14,则将输出3.14

C. 执行时如输入ABC,则将输出0

D. 执行时如输入-10,则将输出10

答案A

解析:B 出错ValueError: invalid literal for int() with base 10: '3.14',

         C 出错ValueError: invalid literal for int() with base 10: 'ABC'

         D 输出-10

第 7 题 下面Python代码执行时,其说法正确的是( )。

N = int(input())M = int(input())if N > M:  print(N - M)else:  print(M - N)

A. 不管输入是正数负数还是0,其输出结果肯定是大于等于0

B. 不管是负整数、正整数亦或0,其结果肯定是大于等于0

C. 如果N和M是相等的整数,将不会有输出

D. 如果N和M输入带有小数点的数,将按整数部分计算

答案B

解析:A D输入非整数时出错 ValueError: invalid literal for int() with base 10: '3.1'

         C 相等是输出0

易错题,容易选D,int无法将字符型的数转化为整数

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

tnt = 1for i in range(5):  tnt *= iprint(tnt, i)

A. 24 5

B. 10 5

C. 24 4

D. 0 4

答案D

解析:i从0开始,所以tnt为0

第 9 题 Python编程求数列-1+2+3-4+5+6-7+8+9-10+11+12-13+...... 之值。如输入4,则计算1到4包含1和4之间的值,规律如数列所示。下面说法,正确的是( )。

N = int(input("请输入正整数:"))tnt = 0for i in range(1, N + 1):  if i % 3 == 1:    tnt += -i  else:    tnt += iprint(tnt)

A. range(1, N + 1) 应该修为range(1, N) 才会符合预期

B. i % 3 == 1 应修改为i % 3 == 0 才会符合预期

C. i % 3 == 1 修改为i % 3 与当前程序效果相同

D. 当前代码能达到题目所描述目标

答案D

解析:A 包含4,就需要N+1

         B 改为i%3==0将会变为1+2-3+4+5-6..

         C 改为i % 3将会变为1+2-3+4+5-6..

第 10 题 下面Python代码的相关说法,正确的是( )。

for i in range(1, 10):  if i % 2 == 0:    continue  else:    print(i, end = "#")print(i,"END")

A. 上述代码执行后,其输出是1#3#5#7#9#9END

B. 删除else: 后的执行效果与当前代码相同

C. 删除else: 且print(i, end = "#") 与if对齐,则执行效果与当前代码相同

D. 将print(i,"END") 与if对齐,其执行效果与当前代码相同

答案C

解析:A 输出是1#3#5#7#9#9 END(第二个9后面多一个空格)

         B 输出是9 END(print(i, end = "#")在continue后不会打印))

         D 输出为

1#1 END3#3 END5#5 END7#7 END9#9 END

易错题,容易选A,易漏掉第二个9后面的空格

第 11 题 下面的Python代码用于求正整数各位数之和(即数位和),约定高位不为0,如123则各位数之和为1+2+3结果为6。为实现该目标,横线处应该填写的代码是( )。

N = int(input())tnt = 0while N != 0:  ____________  ____________print("各位数数之和为:", tnt)

A.

tnt += N // 10N //= 10

B.

tnt += N % 10N //= 10

C.

tnt += N % 10N /= 10

D.

tnt = tnt + N % 10N /= 10
答案B

解析:循环中先取除以10的余数,再取除以10取整

第 12 题 某个功能需要知道一个输入的正整数的各位数字中有多少个奇数,下面的Python代码是其实现,横线处应该填入的代码是( )。

N = int(input())odd_count = 0 #记录奇数的个数old_number = N #保存原数while N != 0:  if _________________:    odd_count += 1    N = (N - N % 10) // 10print(f"{old_number}中共有{odd_count}个奇数")

A. N % 10 % 2 == 0

B. N % 10 % 2 == 1

C. N // 10 // 2 == 1

D. N // 2 // 10 == 0

答案B

解析:循环中先取除以10的余数再阶乘以2的余数是1即为奇数

第 13 题 下面的Python执行后如果输入 8 ,希望输出如下图形。相关说法,正确的是( )。

import turtleN = int(input("请输入射线数量:"))Angle = 360 / N #计算出每条射线之间间隔的角度for i in range(N):  turtle.right(Angle)  turtle.forward(100)  turtle.goto(0,0)turtle.done()

A. Angle = 360 / N 应该修为Angle = 360 // N 才能实现输出效果

B. range(N) 修改为range(1, N + 1) 效果相同,都能实现输出效果

C. range(N) 修改为range(1, N) 效果相同,都能实现输出效果

D. turtle.right(Angle) 应该修正为turtle.right(i * Angle) 才能达到预期效果

答案B

解析:A /为非整型输出,//为整型输出,有一点误差,例如N=7时,分别51.42857142857143,51

          B 循环中没有使用N的值,不影响,循环次数是相同

          C 修改为range(1, N + 1)效果相同

          D 不正确,画线的顺序不正确,最后落点也不正确

第 14 题 有关下面 Python 代码的说法,正确的是( )。

import turtleturtle.forward(100)turtle.left(90)turtle.forward(100)turtle.goto(0, 0)turtle.done()

A. 代码执行后,将输出等腰直角三角形

B. 代码执行后,将输出等长的两条边,其夹角为90度,因为没有画出斜边,因此不是三角形

C. 代码执行后,90度夹角位于原点

D. 因为没有执行 turtle.pendown() ,所以不会画出图形

答案A

解析:B goto(0, 0)将画出斜边,回到原点

          C 90度夹角位于(100, 0)

          D  不需要画出turtle.pendown()也能画出图形,有forward与goto

第 15 题 在Python中, turtle.write() 用于在当前坐标处输出文字。下面说法,错误的是( )。

import turtlefor i in range(1,10):  turtle.write(f"{i}+{i}={i*2}")  turtle.goto(i*40,0)  turtle.done()

A. 1+1=2 输出在坐标原点,即(0,0)

B. 1+1=2 的起点与2+2=4 的起点间隔40个像素

C. 最后输出是10+10=20

D. 1+1=2 等输出文字的下面将有一条直线

答案C

解析:C 最后输出是 9 + 9 = 18,考察range的范围,左闭右开

易错题,容易选D,文字下面确实有一条直线

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

第 1 题 小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。( )

答案:正确

解析:易错的,确实有操作系统

第 2 题 Python表达式4 ** 2 和2 * 2 ** 2 的结果相同。( )

答案:错误

解析:答案分别为16 与8

第 3 题 下面Python代码执行后将输出0。 ( )

for i in range(1, 10):  if i % 3 == 0:    breakprint(i)

答案:错误

解析:答案3

第 4 题 下面Python代码用于求1到N之和,N为正整数。因为range()中为N + 1,因此是1到N且包含N之和。( )

N = int(input("请输入正整数:"))total = 0for i in range(1, N + 1):total += iprint(total)

答案:错误

解析:代码没有缩进,易错题

第 5 题 执行下面的Python代码,其语句print(N)将被执行0次或无数次(即死循环)。( )

N = input()while N:  print(N)

答案:正确

解析:N不为0时,被执行无数次,为0时,不执行

第 6 题 下面的Python代码能实现判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同,如121或414等是对称数,而123不是对称数。( )

n = int(input("请输入正整数:"))old_number = nnew_number = 0while n != 0:  new_number = new_number * 10 + n % 10  n //= 10  if old_number == new_number:  print("对称数")else:  print("非对称数")

答案:正确

解析:new_number是old_nember取相反的数

第 7 题 执行下面的 Python 代码,如果输入为大于 0 的整数,则输出一定为 -N。( )

N = int(input())total = 0for i in range(-N,N,2):  total += iprint(total)

答案:正确

解析:从负整数开始加,至正整数(不包括)结束,所以总和少一个正整数,输出就是-N,易错题

第 8 题 执行 Python 语句print(int(3.14)) 将报错。( )

答案:错误

解析:结果为3

第 9 题 下面的 Python 代码执行后,将输出等边三角形。( )

import turtleturtle.circle(50, steps = 3)turtle.done()

答案:正确

解析:边长为50的三角形,图形如下:

第 10 题 下面的 Python 代码执行后第一条直线与第二条直线相交于原点,两线之间的夹角为120度。( )

import turtleturtle.forward(100)turtle.right(60)turtle.forward(100)turtle.right(60)turtle.forward(100)turtle.done()

答案:错误

解析:图形如下:

3 编程题(每题 25 分,共 50 分)

3.1 编程题 1

试题名称:交朋友

时间限制:1.0 s

内存限制:512.0 MB

3.1.1 题目描述

Alice 班上共有 4 个小朋友,身高分别为 ,其中 Alice 的身高为 。

Alice 想要和身高最接近她的人交朋友,如果有多个人符合条件,则 Alice 想和其中较矮的那一人做朋友,你能告诉

她这个人的身高是多少吗?

3.1.2 输入格式

输入共 行,第 行包含一个整数 ,表示班上小朋友的身高。

3.1.3 输出格式

输出 行,包含一个整数 ,表示 Alice 想交的朋友的身高。

3.1.4 样例

3.1.4.1 输入样例

150165135133

3.1.4.2 输出样例

135

3.1.5 样例解释

样例 1 中,Alice 身高为 150,第 2、3 个小朋友与 Alice 身高差距为 15,同样最接近,Alice 选较矮的一个即第 3 个身高为 135 的小朋友交朋友。

3.1.6 数据范围

保证100≤Hi≤199且Hi互不相同。

3.1.7 参考程序1(官方参考程序)

#读入4个小朋友的身高H1 = int(input()) # Alice 的身高H2 = int(input())H3 = int(input())H4 = int(input())# 我们只关心 H2, H3, H4(其他三个小朋友)# 先算出每个人和 Alice 的身高差(用绝对值,这样不会负数)# 与H2小朋友的身高差# 如果身高差为负数,转换为正数。diff2 = H2 - H1if diff2 < 0:  diff2 = -diff2# 与H3小朋友的身高差diff3 = H3 - H1if diff3 < 0:  diff3 = -diff3# 与H4小朋友的身高差diff4 = H4 - H1if diff4 < 0:  diff4 = -diff4# 刚开始假设最好的朋友是 H2best = H2 # 最好的小朋友身高,best_diff = diff2 # 与最好小朋友的身高差# 比较 H3 小朋友if diff3 < best_diff: # 如果 H3 更接近,即身高差更小  best = H3 # 最好小朋友的身高进行更新  best_diff = diff3 # 与最好小朋友的身高差更新elif diff3 == best_diff and H3 < best: # 如果一样近,但 H3 小朋友更矮  best = H3# 比较 H4if diff4 < best_diff: # 如果 H4 更接近  best = H4 # 最好小朋友的身高进行更新  best_diff = diff4 # 与最好小朋友的身高差更新elif diff4 == best_diff and H4 < best: # 如果一样近,但 H4 更矮  best = H4# 输出结果,即输出最好小朋友的身高print(best)

参考程序2(作者自创,不需要导入库函数,使用min函数与abs函数)

#读入4个小朋友的身高H1 = int(input()) # Alice 的身高H2 = int(input())H3 = int(input())H4 = int(input())# 算出身高差的绝对值的最小值min_value = min(abs(H2 - H1),abs(H3 - H1), abs(H4 - H1))#先找出比Alice身高高的最小值for i in H2, H3, H4:    if H1 - i == -min_value:        best_value = i#先找出比Alice身高矮的最小值for i in H2, H3, H4:    if H1 - i == min_value:        best_value = iprint(best_value)
3.2 编程题 2

试题名称:数字替换

时间限制:1.0 s

内存限制:512.0 MB

3.2.1 题目描述

Alice 不喜欢数字 4,但觉得数字 8 寓意好,她想把数中的 4 全都替换成 8,若数中不含 4 则无需修改,你能帮帮她吗?

3.2.2 输入格式

输入一行,包含一个整数 ,表示替换前的数。

3.2.3 输出格式

输出一行,包含一个整数 ,表示替换后的数。

3.2.4 样例

3.2.4.1 输入样例 #1

8459045

3.2.4.2 输出样例 #1

8859085

3.2.4.3 输入样例 #2

123

3.2.4.4 输出样例 #2

123

3.2.4.5 样例解释

对于样例1,输入 8459045 中有两个 4,都将其替换为了 8,得到 8859085。

对于样例2,输入 123 中不包含 4,无需修改输入数字,输出 123。

3.2.5 数据范围

0≤A≤108。

3.2.6 参考程序1(官方参考程序)

num = int(input()) # num保存输入的数new_num = 0 # 4被替换为8的新数,loop_count = 0 #循环次数times = 10 ** loop_count # 根据循环次数决定是10的多少次方while num > 0:  if num % 10 == 4: # 如果余数是4,也就是该位置为4    new_num += times * 8 # 变成8乘以多少次方  else:    new_num += times * (num % 10) # 用原数乘以多少次方  num //= 10  loop_count += 1 #循环次数+1,相当于向前一位  times = 10 ** loop_count #根据循环次数决定是10的多少次方print(new_num) # 输出新的数

参考程序2(非官方,官方看见这个答案会被气死吗?)

num = input() # num保存输入的数new_num = num.replace('4','8')print(new_num) # 输出新的数

最新文章

随机文章