当前位置:首页>python>2025年GESP 12月认证 Python二级真题解析(一选择题部分)

2025年GESP 12月认证 Python二级真题解析(一选择题部分)

  • 2026-09-07 20:42:12
2025年GESP 12月认证 Python二级真题解析(一选择题部分)

第 1 题 近日,空中客车公司表示,约6000架空客A320系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表示,在对一起飞行事故进行分析后,表明强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进而可能引发飞行异常。在这里的飞行控制系统中,执行判断的部件最可能是下面的( )。A. 辐射传感器B. 处理器C. 内存单元D. 输出设备

正确答案:B核心考点:计算机硬件基础(核心部件的功能定位)解题分析:处理器(CPU)是计算机的运算与控制核心,负责执行逻辑判断、数据运算和指令处理,是飞行控制系统中完成判断动作的核心部件,因此B选项正确。A选项错误:辐射传感器仅负责采集辐射相关的物理数据,不具备逻辑判断能力;C选项错误:内存单元仅负责临时存储数据和运行指令,不执行运算与判断操作;D选项错误:输出设备仅负责将处理结果对外输出,不承担判断功能。

第 2 题 小杨最近为了备考GESP,开始看网络上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,其中之一就是按照地理覆盖的范围来划分。那他平时上学所在的教学楼内的网络是一个( )。A. PANB. LANC. MAND. WAN

正确答案:B核心考点:计算机网络分类(按地理覆盖范围划分)解题分析:LAN(局域网,Local Area Network)的覆盖范围为局部小区域,典型场景为办公室、教学楼、校园内的网络,完全匹配题目描述,因此B选项正确。A选项错误:PAN(个人域网)覆盖范围仅10米内,仅用于手机、耳机等个人设备互联;C选项错误:MAN(城域网)覆盖范围为一个城市,远超教学楼的范围;D选项错误:WAN(广域网)为跨城市、跨国家的大范围网络,如互联网。

第 3 题 下面有关Python变量的说法,正确的是( )。A. 不可以用 for 作为变量名,因为 for 是Python的关键字(保留字)。B. _tnt 不可以是变量名,因为变量名的第一个字符必须是英文字母。C. tnt 不可以是变量名,因为最后一个字符容易与减号混淆。D. 可以用 print 作为变量名,因为 print 是关键字,但这不是好习惯,因为 print 有约定的功能与含义。

正确答案:A核心考点:Python变量命名规则、关键字与内置函数的区别解题分析:for是Python的循环关键字,Python语法明确禁止关键字作为变量名使用,因此A选项正确。B、C选项错误:Python变量名的合法首字符为英文字母、下划线_,_tnt、_tnt_均为符合规则的合法变量名;D选项错误:print是Python内置函数,并非关键字,虽语法上可作为变量名,但会覆盖原有函数功能,不推荐使用。

第 4 题 一个无限循环小数是 0.123123123……,其小数点后第1位是1,后第2位是2,后第3位是3,后第4位是1,依此类推,求第N位。横线处应填入的代码是( )。

N = int(input())remainder = _________if remainder == 0:    print(1)elif remainder == 1:    print(2)else:    print(3)

A. N % 3B. (N - 1) % 3C. N // 3D. (N - 1) // 3

正确答案:B核心考点:循环节规律、取模(%)运算的实际应用解题分析:该小数的循环节为3位(1、2、3),需要实现:N=1时余数为0(输出1)、N=2时余数为1(输出2)、N=3时余数为2(输出3)、N=4时余数回到0,完全匹配(N-1)%3的计算结果,因此B选项正确。A选项错误:N%3会导致N=3时余数为0,错误输出1,不符合循环规律;C、D选项错误://是整数除法,无法实现循环节的余数匹配,不符合题目需求。

第 5 题 某同学执行Python代码 print(3 + 3.14) 时输出 6.140000000000001 ,其原因是( )。A. Python中整数和浮点数相加时,整数会被转换为浮点数,而某些十进制小数如 3.14 无法用有限位二进制精确表示,从而产生微小的舍入误差。B. Python的 print 函数在输出浮点数时有默认小数点位数,因此输出了更多位数。C. 3.14 是一个无限循环小数,在计算机中无法精确表示。D. 由于计算机CPU的运算错误导致。

正确答案:A核心考点:Python浮点数的二进制存储原理、精度误差解题分析:计算机使用二进制存储浮点数,十进制有限小数3.14无法用有限位二进制数精确表示,会产生微小的舍入误差;同时整数与浮点数相加时,整数会隐式转换为浮点数,最终结果出现精度偏差,因此A选项正确。B选项错误:该现象是数值本身的存储误差,与print函数的输出格式无关;C选项错误:3.14是十进制有限小数,并非无限循环小数;D选项错误:这是浮点数存储的通用规则,并非CPU运算错误。

第 6 题 某单位工号的编码规则:编码总长5位,均为数字,前4位依次整除以3,其值累加之和除以10的余数为第5位数字。如某工号为76587,前4位分别整除3后,商分别为2、2、1、2,其累加之和为7,除以10的余数为7,故第5位为7。下面的程序依次输入前4位数字,并计算输出最后一位。程序逐行输入前4位数字,要输出第5位数字。则在横线处应填上的代码是( )。

rst = 0for _ in range(4):    N = int(input())    rst += ___________print(___________)

A. 1.N % 3  2.rst // 10B. 1.N // 3  2.rst % 10C. 1.N % 3  2.rst % 10D. 1.N // 3  2.rst // 10

正确答案:B核心考点:Python算术运算符(整除//、取模%)、循环累加逻辑解题分析:第一空:题目要求前4位数字依次整除以3,取商进行累加,整除运算对应N//3;第二空:题目要求累加和除以10的余数作为第5位,取余运算对应rst%10; 因此B选项正确。

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

for i in range(-2, 2):if i % 2:        print(i, end = "#")

A. -1#1#B. -1#0#1#C. -2#-1#1#2#D. -2#-1#0#1#

正确答案:A核心考点:range函数的取值规则、Python取模运算规则、条件判断的布尔转换解题分析:

  1. range(-2, 2)为左闭右开区间,生成的元素为-2、-1、0、1;
  2. Python中取模结果的符号与除数一致,因此-2%2=0、-1%2=1、0%2=0、1%2=1;
  3. 非0数值对应布尔值True,0对应False,因此仅-1和1会被输出,最终结果为-1#1#,A选项正确。

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

cnt = 0for i in range(1, 10, 2):for j in range(i):        cnt += 1print(cnt)

A. 100B. 55C. 45D. 25

正确答案:D核心考点:嵌套循环的循环次数计算、range函数的步长参数解题分析:

  1. 外层循环range(1, 10, 2)的步长为2,生成的i值为1、3、5、7、9,共循环5次;
  2. 内层循环range(i)的循环次数等于i的值,总循环次数为1+3+5+7+9=25;
  3. 每次循环cnt加1,最终cnt的值为25,因此D选项正确。

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

for i in range(1, 12):if i % 2 == 0:continuefor j in range(i):if i * j % 2 == 0:breakelse:        print(i * j, end=" ")else:    print(i * j)

A. 0 0B. 11C. 0D. 0 11

正确答案:C核心考点:循环控制语句(break/continue)、循环的else子句、嵌套循环执行流程解题分析:

  1. 外层循环i的取值范围是1-11,偶数会被continue跳过,仅处理奇数1、3、5、7、9、11;
  2. 内层循环j从0开始,第一个j=0时,i*j=0,0%2==0永远成立,会立即触发break,内层循环永远无法正常结束;
  3. 内层循环的else子句仅在循环正常结束(未被break终止)时执行,因此内层else的print永远不会执行;
  4. 外层循环全程无break,会正常结束,执行外层else的print;循环结束后i=11,j=0,i*j=0,最终仅输出0,因此C选项正确。

第 10 题 与下面Python输出效果不一致的代码是( )。

for i in range(10):    print(i)

A.

i = 0while i < 10:    print(i)    i += 1

B.

i = 0while i < 10:    i += 1    print(i)

C.

i = 0whileTrue:    print(i)    i += 1if i >= 10:break

D.

i = 0whileTrue:if i >= 10:break    print(i)    i += 1

正确答案:B核心考点:for循环与while循环的转换、循环执行顺序对输出结果的影响解题分析:原代码的输出效果为:依次输出0、1、2、3、4、5、6、7、8、9,共10行,从0开始到9结束。B选项先执行i += 1再执行print,输出内容为1、2、3...10,与原代码效果完全不一致,因此B选项正确。A、C、D选项的输出均为0-9,与原代码效果一致。

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

num = 0while num <= 5:    num += 1if num % 3:continue    print(num, end='#')else:    print(num)

A. 3#6#B. 3#6#6C. 1#2#3#4#5#6#D. 1#2#3#4#5#6#6

正确答案:B核心考点:while循环的执行流程、continue语句、循环的else子句解题分析:

  1. 逐行执行循环:
    • num=0→+1=1,1%3=1(布尔值True)→continue,不输出;
    • num=1→+1=2,2%3=2(布尔值True)→continue,不输出;
    • num=2→+1=3,3%3=0(布尔值False)→输出3#;
    • num=3→+1=4,4%3=1→continue,不输出;
    • num=4→+1=5,5%3=2→continue,不输出;
    • num=5→+1=6,6%3=0→输出6#;
  2. 此时num=6,不满足num<=5,while循环正常结束,执行else子句的print(num),输出6;
  3. 最终完整输出为3#6#6,因此B选项正确。

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

cnt = 0for i in range(5):for j in range(i,4):        cnt += 1print(cnt)

A. 9B. 10C. 14D. 20

正确答案:B核心考点:嵌套循环的循环次数计算、range函数的起始值参数解题分析:

  1. 外层循环i的取值为0、1、2、3、4;
  2. 内层循环range(i,4)为左闭右开区间,循环次数计算:
    • i=0:j取0、1、2、3→4次,cnt=4;
    • i=1:j取1、2、3→3次,cnt=7;
    • i=2:j取2、3→2次,cnt=9;
    • i=3:j取3→1次,cnt=10;
    • i=4:range(4,4)为空→0次,cnt不变;
  3. 最终cnt的值为10,因此B选项正确。

第 13 题 漂亮数的定义是:如果N能被M整除,或者某位是M,或者N的每位数之和能被M整除,则说N是M的漂亮数。如果三个条件都满足,则是完整漂亮数。123是3的完整漂亮数,因为123能被3整除,也含有3,其每位数之和为6也能被3整除。下面的代码用于判断N是否为M的完整漂亮数并输出。相关说法正确的是( )。

N = int(input("请输入N,N必须是0或正整数:"))M = int(input("请输入M:M必须大于1小于等于9:"))Sum = 0#记录各位数之和Flag = False#记录N是否含有Mwhile N != 0:    num = N % 10    Sum += numif num == M:        Flag = True    N //= 10if (N % M == 0) and (Flag == True) and (Sum % M == 0):    print(f"{N}是{M}的完整漂亮数")else:    print(f"{N}不是{M}的完整漂亮数")

A. 代码能完成题目设定目标。B. 在 while 循环中 N 最终将变成0,因为代码 N % M 将总是满足条件,可以在 while 前增加一行代码 old_num = N ,并将 N % M 改为 old_num % M ,随后print() 中的{N} 改为{old_num} 。C. while 循环中 if 判断语句可以增加 else 子句,其内容为 Flag = False 。D. 如果先后输入 0 和 3 ,则肯定会输出 0是3的完整漂亮数。

正确答案:B核心考点:while循环的变量修改、整数数位处理、逻辑判断的bug排查解题分析:代码存在核心bug:while循环中通过N = N//10逐位处理数字,循环结束后N会被修改为0,导致后续N%M==0永远成立,且print输出的N是0,而非用户输入的原始数值,无法完成题目要求。B选项的修改方案完美解决了该bug:先保存原始输入的N到old_num,用old_num做整除判断,输出也使用原始数值,因此B选项正确。

  • A选项错误:代码存在核心bug,无法完成题目设定的目标;
  • C选项错误:Flag的作用是标记“是否有任意一位是M”,只要有一位符合就应为True,不能加else重置为False;
  • D选项错误:输入0时,while循环不执行,Flag保持False,不满足“三个条件都满足”的完整漂亮数要求,不会输出对应内容。

第 14 题 阅读下面的Python代码。执行后如输入 5 ,其输出的字符图形是( )。

n = int(input())for i in range(n):for j in range(n - i - 1):        print(" ", end="")for k in range(2 * i + 1):        print("*", end="")    print()

A.

***** ****  ***   **    *

B.

    *   ***  ***** *******

C.

***************

D.

    *   **  *** *********

正确答案:B核心考点:嵌套循环实现图形打印、循环次数与空格/星号数量的对应关系解题分析: 输入n=5时,i的取值为0、1、2、3、4,逐行执行:

  • i=0:4个空格,1个* →    *
  • i=1:3个空格,3个* →   ***
  • i=2:2个空格,5个* →  *****
  • i=3:1个空格,7个* → *******
  • i=4:0个空格,9个* →********* 最终输出为正金字塔图形,因此B选项正确。

第 15 题 某学校举办“十佳歌手大奖赛”,经过选拔最终参赛选手有25人,评委10人,最终计分规则去掉一个最高分 去掉一个最低分作为该参赛选手的最终得分,并输出该得分。每位评委都必须打分,且分数都大于等0。相关说法正确的是( )。

for _ in range(25):    max_score = 0#记录最高分    min_score = 9999#记录最低分    total_score = 0#记录总分for _ in range(10):        now_score = float(input()) #录入评委打分if now_score > max_score:            max_score = now_scoreif now_score < min_score:            min_score = now_score        total_score += now_score    print(total_score - max_score - min_score)

A. 程序总体逻辑错误。因为要去掉最高分和最低分,需要排序,而程序没有相关代码。B. 内层循环和外层循环之间的三行代码也就是 max_score = 0 开始的三行代码应该移动到外层循环外。C. if now_score > max_score 和 if now_score < min_score 中的 > 和 < 分别调整为 >= 和 <= 不影响程序执行结果。D. total_score += now_score 不可以更改为 total_score = total_score + now_score 。

正确答案:C核心考点:循环中的极值计算、累加运算、运算符的等价性解题分析:计分规则仅需去掉一个最高分和一个最低分,即使存在多个相同的极值,>改>=、<改<=仅会改变极值的记录时机,不会改变最终的极值数值,因此不影响程序执行结果,C选项正确。A选项错误:遍历过程中可直接记录最大值和最小值,无需排序,程序总体逻辑正确;B选项错误:每个选手的最高分、最低分、总分都需要重新初始化,移到外层循环外会继承上一个选手的数据,导致计算错误;D选项错误:+=是增量赋值运算符,total_score += now_score与total_score = total_score + now_score完全等价。

最新文章

随机文章