2025年GESP 9月认证 Python二级真题解析(一选择题部分)
第 1 题 人工智能现在非常火,小杨就想多了解一下,其中就经常听人提到“大模型”。那么请问这里说的“大模型”最贴切是指 ( )。A. 大电脑模型B. 大规模智能C. 智能的单位D. 大语言模型
正确答案:D核心考点:人工智能基础常识解题分析:当前人工智能领域提及的“大模型”,核心是大语言模型(Large Language Model, LLM),是基于海量文本数据训练的、具备强大语言理解与生成能力的AI模型,也是ChatGPT、文心一言等产品的核心底座。A、B、C均为无行业共识的错误表述。
第2题 在TCP协议中,完成连接建立需要通过( )握手。A. 一次B. 二次C. 三次D. 四次
正确答案:C核心考点:TCP/IP网络协议基础解题分析:TCP协议是面向连接的可靠传输协议,建立连接需要三次握手,断开连接需要四次挥手。三次握手的核心是确保客户端和服务端的发送、接收能力都正常,是网络通信的基础常识。
第3题 下面的Python代码用于输入姓名,然后输出姓名,正确的说法是( )。
XingMing = input("请输入您的姓名:")print(XingMing)A. XingMing 是汉语拼音,不能作为变量名称B. 可以将 XingMing 改为 Xing MingC. 可以将 XingMing 改为 xingmingD. 可以将 XingMing 改为 Xing-Ming
正确答案 C核心考点:Python变量命名规则解题分析:Python变量名必须遵循3个核心规则:① 只能由字母、数字、下划线组成;② 不能以数字开头;③ 不能包含空格、特殊符号(如连字符),大小写敏感。
-。第4题 下面Python代码用于获得正整数N的第M位数,如N等于1234,M等于2,则输出3。此题假设M的值大于等于1小于等于N的位数。横线处应填入的代码是( )。
N = int(input("请输入一个正整数:"))M = int(input("请输入从右到左取第几位数:"))div = 10 ** (M - 1)print(__________)A. N % div // 10B. N // div // 10C. N % div % 10D. N // div % 10
正确答案:D核心考点:Python整除//与取模%运算解题分析:核心逻辑是先通过整除去掉目标位右侧的所有数字,再通过取模提取目标位。
N//div → 1234//10=123(去掉右侧1位),再123%10=3(提取个位,即目标位),对应公式N // div % 10a, b = 3, 4c = a == bprint(a, b, c)A. False 4 4B. 3 3 3C. 4 4 4D. 3 4 False正确答案:D核心考点:Python变量赋值与比较运算解题分析:
==是相等比较运算符,3==4的结果是布尔值False,因此c=False;3 4 False。N = int(input("请输入编号位置:"))part1 = N % _____part2 = N % _____if part1 < 10: print(f"0{part1}-{part2}")else: print(f"{part1}-{part2}")A. 12 10B. 10 10C. 11 9D. 9 9
正确答案:A核心考点:循环周期的取模运算解题分析:编号的核心是两个循环周期:
part1 = N % 12;part2 = N % 10;for i in range(-2, 2):if i: print(i, end = "#")A. -2#-1#1#B. -2#-1#0#1#C. -2#-1#1#2#D. -2#-1#0#1#2#
正确答案:A核心考点:range函数、Python布尔值规则解题分析:
range(-2,2)是左闭右开区间,取值为-2、-1、0、1;if i:中,数值会被隐式转换为布尔值:非0数值为True,0为False;-2#-1#1#。cnt = 0for i in range(-10,10):for j in range(i): cnt += 1print(cnt)A. 145B. 125C. 55D. 45
正确答案:D核心考点:嵌套for循环的执行次数计算解题分析:
range(-10,10) → i从-10到9,共20个值;range(i)的规则:当i≤0时,range无元素,内层循环不执行,cnt不增加;只有i>0时,内层循环才会执行;1+2+3+...+9 = 45。for i in range(1, 12):if i % 2 == 0:continuefor j in range(i):if i * j % 2:breakelse: print(i * j)A. 99B. 11C. 0D. 没有输出
正确答案:C核心考点:循环的continue/break、for-else语法、奇偶运算规则解题分析:
if i%2==0: continue 过滤掉偶数,i仅取奇数:1、3、5、7、9、11;for-else结构,仅当for循环正常结束(未被break中断)时,才会执行else子句;i*j=0,0%2=0,不触发break,循环正常结束,执行else,print(i*j) → 输出0;i*j%2=1,触发break,else子句不执行,无输出;a = int(input())b = int(input())while b != 0: remainder = a % b a = b b = remainderprint(a)A. b 不能为 0,因为 a % b 将导致错误B. a 必须小于 b ,否则 a % b 将导致错误C. a 和 b 都必须为正整数,否则 a % b 将导致错误D. 如果 a 为0,则不管 b 为多少,输出都将是 b
正确答案:D核心考点:辗转相除法(欧几里得算法)、Python取模运算规则解题分析:该代码是经典的求两个数最大公约数的算法,逐一分析选项:
b!=0,因此循环内的b永远不为0,不会出现除零错误;10%3=1完全合法,算法会自动交换a和b的顺序;-10%3=2,不会报错,无需必须为正整数;remainder=0%5=0,a=5,b=0,循环结束,print(a)=5,即b的值,符合描述。num = 0while num <= 5: num += 1if num == 3:continue print(num, end='#')A. 1#2#4#5#6#B. 1#2#4#5#6C. 1#2#3#4#5#6#D. 1#2#3#4#5#6
正确答案:A核心考点:while循环执行流程、continue关键字解题分析:continue的作用是跳过本次循环剩余代码,直接进入下一次循环判断,逐行执行:
1#;2#;4#;5#;6#;num<=5,循环结束。 最终输出1#2#4#5#6#。now_num = int(input())min_num = max_num = now_numwhile now_num != -999:if max_num < now_num: max_num = now_numif min_num > now_num: min_num = now_num now_num = int(input())print(min_num, max_num)A. 程序运行时如果第一个数输入 -999 ,则输出将是-999 -999B. 程序输入过程中,如果输入的第一个数不是 -999 ,且如果待输入的实际数据中没有 -999 【即:-999 仅作为结束程序的标志数据】,则程序能求出最大数和最小数C. 如果用于输入考试成绩,即成绩中不可能有 -999 ,则程序能求出最高成绩和最低成绩D. 可以将now_num = int(input()) 移动到while now_num != -999: 之后
正确答案:D核心考点:while循环的输入逻辑、边界条件判断解题分析:本题要求选择错误的说法,逐一验证:
min_num = max_num = now_num这一行中,now_num未定义,直接抛出NameError,程序无法运行,说法错误。cnt = 0for i in range(1,1000):if i % 5 == 0: j = i cnt += 1continuewhile j > 0:if j % 10 == 5: cnt += 1breakelse: j //= 10print(cnt)A. 删除代码中 continue 不影响程序执行结果 B. 删除代码中 break 不影响程序执行结果 C. 删除j = i 并将 while 循环的j修改为i,不影响程序执行结果 D. 将while j > 0 修正为while j>= 0 不影响程序执行的结果
正确答案:C核心考点:循环的continue/break、数位遍历逻辑解题分析:代码核心逻辑是统计1-999中,能被5整除或包含数字5的数的个数,逐一分析选项:
j=i仅在能被5整除的分支中,不能被5整除的数未给j赋值,本身存在逻辑缺陷;将while循环的j改为i后,直接遍历当前数的每一位,逻辑完全正确,不影响最终结果;while j>=0后,j=0时会进入死循环,程序无法结束,结果错误。输入行数量:10输入每行字符数量:12-----**----------**----------**----------**-----************************-----**----------**----------**----------**----------**-----n = int(input("输入行数量:"))m = int(input("输入每行字符数量:"))mid_row = n // 2mid_col = m // 2for i in range(n):if __________: print('*' * m)else:if m % 2 == 1: left = '-' * mid_col center = '*' right = '-' * mid_col print(left + center + right)else: left = '-' * (mid_col - 1) center = '**' right = '-' * (mid_col - 1) print(left + center + right)A. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and (i == mid_row - 1 or i == mid_row))B. (n % 2 == 0 and i == mid_row) or (n % 2 == 1 and (i == mid_row - 1 or i == mid_row))C. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and (i == mid_row or i == mid_row + 1))D. (n % 2 == 1 and i == mid_row) or (n % 2 == 0 and i == mid_row - 1) and (n % 2 == 0 and i == mid_row)
正确答案:A核心考点:图形打印的边界条件、奇偶行判断解题分析:横线处的核心逻辑是判断当前行是否为中间行,中间行打印全*:
i == mid_row(如n=9,mid_row=4,i=4为中间行);i == mid_row-1和i == mid_row(如n=10,mid_row=5,i=4和5为中间行);请输入层数:10 1 23 456 7891 23456 789123 4567891 23456789 1234567891234567891N = int(input("请输入层数:"))K = 1for i in range (1, N + 1):for _ in range(1, ___________): print(" ", end = "")for _ in range(1, ________): print(K, end = "") K += 1if K == 10: K = 1 print()A. N-i+1 和 i+1B. N - i 和 2 iC. 1 N 和 2 iD. 2 N - i 和 i + 1正确答案:A核心考点:金字塔图形打印、循环次数控制解题分析:金字塔的核心规律:第i行(i从1到N),先打印N-i个空格,再打印i个数字。
N-i次,range的结束值为N-i+1(如N=10,i=1,循环9次,range(1,10),即N-i+1=10-1+1=10);i次,range的结束值为i+1(如i=1,循环1次,range(1,2));