2023年3月GESP Python 一级试卷解析
- 以下不属于计算机输入设备的有( )。
- 键盘
- 音箱
- 鼠标
- 传感器
【答案】B
【解析】本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界向机器内部传递信息,“输出”指计算机内部信息向外界展示。此题中,“音箱”属于向外部播放声音,故属于输出概念,正确答案为B。
- 计算机系统中存储的基本单位用B来表示,它代表的是( )。
- Byte
- Block
- Bulk
- Bit
【答案】A
【解析】本题属于考察计算机基础知识中,关于存储的基本单位;计算机中,表示存储大小的最小单位为“字节”,英文为“Byte”,表示一个字节存储空间大小的单位,用大写字母B表示,故此题选A。
- 下面有关Python的说法,不正确的是( )。
- Python是一种面向对象的程序设计语言
- Python有丰富的扩展库,是Python的重要特色
- Python编译器可以生成目标平台的机器代码,运行效率高
- Python是解释型高级语言,可以跨平台运行
【答案】C
【解析】本题考察考生对于Python编程环境与语言特点的了解;C选项错误的原因为:Python是通过解释器逐行解释与运行程序,不属于编译型编程语言,且通常状况下,Python相对于C或C++等编程语言运行效率更低。
- 以下选项中,符合Python语言变量命名规则的是( )。
- 5Star
- fiveStar
- *Star
- @Star
【答案】B
【解析】本题考察Python语言中变量名的定义规则;Python中声明变量名时,变量名中能且只能包含字母、数字、下划线,且不能用数字开头,选项中A、C、D均不满足要求,故选B。
- 下面有关Python循环中有关break语句的说法,正确的是( )。
- 含有break语句的所在循环,将不会执行该循环的else子句
- 含有break语句的所在循环,如果break被执行,将中断该循环;
- 一个循环只能有且只能有一个break语句;
- 一个循环可以有多个break子句,但每次执行只能一个break被执行;
【答案】B
【解析】本题属于考察循环结构中,流程控制关键字break的使用;A选项错误在于,如果循环与else结合,当循环没被break终止时,会执行else中的语句;C选项错误在于,循环结构中可以设置多个break语句;D选项的每次执行可能一个break也不被执行,而是正常结束。
- 在Python中实现123除以10分别得到其商a和余数b的代码是( )。
- a ,b = 123 % 10 , 123 // 10
- a , b = 123 // 10 , 123 % 10
- a , b = 123 / 10 , 123 % 10
- a , b = 123 / 10 , 123 // 10
【答案】B
【解析】本题属于考察Python中的基本运算;首先需要了解赋值运算符的规则,如a,b = 1,2,相当于a=1,b=2;其次考察求商运算符//和求余运算符%的使用;综上,本题正确答案为B。
- 下面有关turtle.color()的说法,正确的是( )。
- turtle.color()函数不能没有参数;
- turtle.color(1,2,3)表示画笔颜色为1、背景颜色为2,前景颜色为3;
- turtle.color("red","green")表示画笔颜色为red、填充颜色为green;
- turtle.color((1,2,3),(4,5,6))分别表示画笔颜色和填充颜色;
【答案】C
【解析】本题属于考察Python中turtle绘图库的使用;turtle库中的color函数,默认颜色为黑色,故A错误;当接收整数作为参数时,三个整数分别表示红、绿、蓝三种颜色,参数可取值只有0和1,故B、D错误;当接收字符串作为参数时,两个参数分别表示画笔颜色和填充颜色,故此题选C。
- 下面Python代码执行后输出如下图形,请在第4行range后括号内横线上填入正确的代码( )。
- 9
- 10
- 1,9
- 1,10
【答案】B
【解析】本题主要考察for循环中变量i的取值范围;观察给出的图形可发现,图形中画出了5条红色线条和蓝色线条,程序共需要运行10次;通过对于程序代码的分析,当i%2==0表示i的取值为偶数时条件成立;所以第一条画出红色线条,i的初始值应为偶数,故排除A、C、D,正确答案为B。
- turtle.speed(n)用于确定绘图速度,当n值为( ),速度最快。
- 0
- 1
- 5
- 10
【答案】A
【解析】本题考察了turtle绘图库中speed()函数;参数的取值范围为0~10,其中参数从1~10画笔速度不断增加,参数为0时速度最快,本题属于固定用法,故选A。
- 下面Python代码执行后显示图形如下,turtle.circle()实现,内外层半径相差为20像素,在横线上填入相应代码( )。
- (i+1)*20
- i*20
- 20
- 40
【答案】A
【解析】本题考察了turtle绘图库中circle()函数的使用与for循环中变量i的取值;通过阅读程序发现,goto()函数中的y坐标在不断变小,画笔向下运动,可以分析出正方形要逐渐放大;for循环中,变量i的取值从0开始不断增加1,所以可以结合变量让circle函数的半径变大,实现画出更大的正方形,排除C、D选项;同时需注意i初始值为0,排除B选项;故正确答案为A。
- 下面Python执行后的输出结果是( )。
- A
- B
- C
- D
【答案】A
【解析】本题主要考察Python中选择结构的使用;if...elif...else...结构,代表“如果...否则如果...否则...”,特点是:当多个条件中有一个条件能够成立时,不再进行其他条件的进行判断;当变量n的值为30时,满足第一个n>30的条件,直接输出对应的结果“A”后结束这个选择结构,故正确答案为A选项。
- 以下Python代码执行后输出结果是( )。
- 12
- 13
- 18
- 23
【答案】A
【解析】本题考察了for循环中range()函数参数与变量i的关系,与循环结构中流程控制关键字continue的使用;range()函数的三个参数分别表示变量i能够取值的初始值、结束值与步长;如range(a,N,x)表示变量从a开始,到N-1结束,每次增加x;由此得出题目中i的取值分别为1、3、5、7、9。关键字continue的作用为,终止当次循环并重新开始下一次循环;条件i%3表示当i除3的余数非0时,略过当次循环,所以Sum中累加的i的值为3和9,故答案为A选项。
- 下面Python代码用于求之和,其中第N项的分母为1+2+…+N之和,在横线填上合适代码以实现( )。
- lastSum = i
- lastSum = sum( i )
- lastSum += i
- lastSum *= i
【答案】C
【解析】本题主要考察for循环中变量的取值,与复合赋值运算符的使用;首先需清楚a+=1的程序写法,等效于a=a+1;根据题意,分母应为1到N的和,阅读代码发现,i此时的取值范围恰好为从1到N,所以应该将变量i的值累加到lastSum变量中,故选项C为正确答案。
- 下面Python代码执行后输出是 ( ) 。
- 0#1#2#3#4
- 0#1#2#3#5
- 0#4#4
- 因为i一直在变大,所以无穷循环永远输出
【答案】B
【解析】本题考察考生对于for循环中range()参数的设置与变量i取值的理解;首先i初始值为2,range(i+2)表示程序会重复执行4次;其次i的取值从0开始每次递增1,所以i值依次取0、1、2、3,程序输出0#1#2#3#;最后当i取值为3的时候,变量经过i+=2变为5,当循环结束输出i时,输出数字5,故选B。
- 执行以下Python代码后,数据结果是( )。
- 0
- 9
- 10
- 18
【答案】B
【解析】本题考察考生对于for循环中变量i取值的理解和流程控制break、continue关键字的掌握;首先i取值为从0到9;其次条件1表示当i为2的倍数时,略过当次循环,条件2表示当i为7的倍数时,终止整个循环;所以Sum变量中累加的数值依次为0、1、3、5,最终输出的结果为9,故此题选B。
二、判断题(每题2分,共20分)
- 在Windows系统中通过键盘完成对选定文本移动的按键组合是先Ctrl+X,移动到目标位置后按Ctrl+V。
【答案】正确√
【解析】本题考察计算机基础中快捷键的使用;Ctrl+X表示剪切文件(复制并从原位置删除),Ctrl+V表示粘贴所剪切的文件。
- 程序员用C、C++、Python、Scratch等编写的程序能在 CPU 上直接执行。
【答案】错误×
【解析】本题属于对计算机历史中,编程语言特点的考察;题目中所列举的编程语言,均无法在CPU上直接执行,而是需要通过各自的方式,转换成机器语言后才能被CPU识别和执行,故本题错误。
- Python代码turtle.circle()可以绘制每边边长相等的多边形。
【答案】正确√
【解析】本题考察了turtle绘图库中circle函数的使用;circle函数可以通过设置steps参数,来画出圆形的内接正多边形,如circle(100,steps=3)可以画出半径100的圆形中的内接正三角形,故此题正确。
- Python代码turtle.goto()执行后不会改变海龟的朝向。
【答案】正确√
【解析】本题考察了turtle绘图库中goto函数的使用;goto函数只会改变画笔所在的位置,并不会调整画笔的方向,故此题正确。
- Python的int()函数可以将数字式字符串形如"3.14"或浮点数如3.14转换为整数。
【答案】错误×
【解析】本题主要考察Python中的数据类型概念和类型转换函数的使用;int函数可以将只包含整数的字符串类型数据,转换为整型数据,无法将包含小数点的数据转换为整数,故此题错误。
- Python表达式"10" * 2的值为20。
【答案】错误×
【解析】本题主要考察Python中不同数据类型进行运算时的规则;Python中定义字符串型*整型,代表将字符串重复N次,题目中的正确结果应该为"1010"。
- Python表达式5 * 3 // 2的值为8,因为15除以2的商为7.5,四舍五入即为8。
【答案】错误×
【解析】本题主要考察Python基本运算中算术运算符的使用;//表示求除法运算中的商,所以5*3//2应该为15//2,即15除2的商,结果为7,故此题错误。
- 在Python语言中,判断语句if可以有多个elif从句,但最多只能有一个else从句。
【答案】正确√
【解析】本题主要考察Python中选择结构中的if...elif...else...结构;本结构可以通过elif设置多个“否则如果”的条件,当所有条件不满足时,程序会执行else中的语句,此结构中只能有一个else,故此题正确。
- 在Python中,假如N为正整数,则range( N )与range( 0 , N )等效。
【答案】正确√
【解析】本题考察了for循环结构中,range()的使用;range()函数默认从0开始,故range(N)与range(0,N)效果相同。
- Python代码print( "19" + "49" )执行后将输出1949。
【答案】正确√
【解析】本题考察了基本数据类型中字符串的拼接操作;Python中定义两个字符串相加时,代表两个字符串进行拼接,故此题正确。
三、编程题(每题25分,共50分)
1.分数交错加减计算
【问题描述】
分数交错加减计算,形如:
1.利用input()语句输入一个大于1的正整数;
2.计算规则:分母为连续奇数,分子为1,偶数位置相减,奇数位置相加,一直计算到最接近N(含)的奇数分母为止;
3.计算结果四舍五入保留8位小数,仅输出计算结果,没有其他。
【输入描述】
输入一个大于1的正整数,假设输入合规,不考虑不合规情景,如带小数点的数,负数等。
特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
输出四舍五入保留8位小数。
特别提示:仅输出8位小数,没有其他。
【样例输入1】
100
【样例输出1】
0.78039866
【样例输入2】
1000
【样例输出2】
0.78489816
【题目大意】多项式求和问题,多项式中的每一项分子都为1,每一项分母都比前一项大2,累加(或减掉)每项求出整个多项式的和。
【解题思路】
1. 分析出分子、分母的规律:分子都为1,分母从1开始逐次增加2;
2. 借助for循环,列举N个多项式的值,利用for循环中i的规律表示分母;
3. 设置变量,记录多项式的项数,并设置条件判断项数为奇数或偶数;
4. 创建变量,将N个多项式的值依次在变量中增加或减小;
5. 按要求完成输入和输出。
【样例程序】
Sum = 0 #设置变量Sum存放多项式的和,初始值为0
stepCount = 1 #记录多项式项数,初始值为1
N = int(input())#输入项数总数N
for i in range(1, N+1, 2): #控制i值(分母值)为递增的奇数
if stepCount%2 == 0: #项数为偶数时,从Sum中减去该项的值
Sum -= 1/i
else: #项数为奇数时,在Sum中增加该项的值
Sum += 1/i
stepCount += 1 #项数增加1
print( round( Sum , 8) ) #使用round函数设置指定位数,并输出结果
2.鸡兔同笼
【问题描述】
利用input()语句先后输入两个正整数,分别代表鸡兔的头和脚的总数。其中,兔有四只脚,鸡有两只脚,都只有一个头。
请编写Python代码计算出兔和鸡的数量,输出结果形如“Chicken=15 Rabbit=5”,如没有解则输出“No solution!”。
【输入描述】
分两次输入,第一次输入头的总数,回车后输入脚的总数。
特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
如果有解,则输出鸡和兔分别数量,形如“Chicken=15 Rabbit=5”Rabbit之前有1个英文半角空格,C和R都为大写。
如没有解则输出“No solution!”,No之后有1个英文半角空格,solution之后有英文半角叹号。
特别提示:注意字母大小写以及空格、叹号等匹配一致。
【样例输入1】
20
50
【样例输出1】
Chicken=15 Rabbit=5
【样例输入2】
20
30
【样例输出2】
No solution!
【题目大意】鸡兔同笼问题,输入鸡兔同笼问题中头和脚的总数,计算并输出鸡和兔子各自的数量,如果存在无解情况,输出无解提示。
【解题思路】
1. 利用循环列举所有鸡和兔子只数的可能性;
2. 根据鸡和兔子头、脚数量的特点,设置条件并判断是否满足条件;
3. 设置变量记录是否找到满足条件的解;
4. 按要求完成输入和输出。
【样例程序】
totalHead = int(input()) #输入头的总数
totalFoot = int(input()) #输入脚的总数
answerCount = 0 #设置变量表示是否有解,初始值为0
for chickenHead in range(totalHead+1): #列举所有鸡的数量的可能性
#根据鸡的数量求出兔子的数量
rabbitHead = totalHead - chickenHead
#判断脚的数量是否正确
if rabbitHead * 4 + chickenHead * 2 == totalFoot:
#按要求输出正确的解
print(f"Chicken={chickenHead} Rabbit={rabbitHead}")
answerCount += 1 #找到正确解后更改变量
if answerCount == 0: #当变量值没变化时,证明没有找到正确的解
print("No solution!") #按要求输出无解提示