2023年GESP09月认证Python一级试卷
分数:100 题数:27
一、单选题(共15题,每题2分,共30分)
01
|
02
|
03
|
04
|
05
|
06
|
07
|
08
|
09
|
10
|
11
|
12
|
13
|
14
|
15
|
C
|
D
|
B
|
C
|
B
|
A
|
C
|
B
|
B
|
D
|
B
|
B
|
A
|
B
|
C
|
1、我们通常说的“内存”属于计算机中的( )。
-
A.输出设备
-
B.输入设备
-
C.存储设备
-
D.打印设备
-
标准答案:C
-
试题解析:本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界向机器内部传递信息,“输出”指计算机内部信息向外界展示。“内存”属于是计算机的重要部件,也称内存储器和主存储器。所以是存储设备,选择C。
2、以下Python不可以作为变量的名称的是( )。
-
A. redStar
-
B. RedStar
-
C. red_star
-
D. red star
-
标准答案:D
-
试题解析:本题考察Python语言中变量名的定义规则:Python中声明变量名时,变量名中能且只能包含字母、数字、下划线,且不能用数字开头,选项中A、B、C均满足要求,只有D选项red和star中间是空格,不符合要求,故选D。
3、Python表达式 2-1 ** 0 % 10 的值是( )。
-
标准答案:B
-
试题解析:本题考察算术运算符的运算优先级,本题中优先算
$1^0=0$
,然后算取余运算1%10=1,最后算减法2-1=1,所以选择B选项。
4、下面Python代码执行后的输出是( )。
a, b = 3, 4
print("a+b=", 7)
-
A. 3+4= 7
-
B. 3+4=7
-
C. a+b= 7
-
D. a+b=7
-
标准答案:C
-
试题解析:本题考察Python中的多变量赋值,算术运算符和print逗号隔开连续输出,首先需要了解赋值运算符的规则,如a,b = 3,4,相当于a=3,b=4,其次是print函数输出,输出多个内容默认中间使用逗号隔开,输出顺序为从左向依次输出。逗号前面是字符串输出“a+b=”,逗号后面输出是变量a+b的计算结果7。所以最后输出内容为a+b= 7。故C选项正确。
5、下面Python代码执行后的输出是( )。
a, b = 1, 2
a, b = b, a
print(a, b)
-
A. 1 2
-
B. 2 1
-
C. 1 1
-
D. 2 2
-
标准答案:B
-
试题解析:本题考察Python中的多变量赋值和print输出。两个Python变量值交换符合Pythonic特征,其他语言多是三角交换,所以a,b=1,2,相当于a=1,b=2,其次是a,b=b,a,相当于temp=a,a=b,b=temp。所以最后a=2,b=1,print函数依次输出2,1。故选B。
6、下面Python代码执行后的输出是( )。
m = 14
n = 12
if m % 2 == 0 and n % 2 == 0:
print("都是偶数")
elif m % 2 == 1 and n % 2 == 1:
print("都是奇数")
else:
print("不都是偶数或奇数")
-
A. 都是偶数
-
B. 都是奇数
-
C. 不都是偶数或奇数
-
D. 以上说法都不正确
-
标准答案:A
-
试题解析:本题属于考察选择语句的多分支语句和基本运算中的取余运算符、逻辑运算符and和比较运算符==。首先,定义了两个变量m,n,赋值为14,12。然后使用了多分支语句进行判断,多分支语句的特点是当多个条件中有一个条件能够成立时,不再进行其他条件的判断。本题中判断条件是对应变量对2取余,判断是否存在余数。存在余数就是奇数,不存在余数就是偶数。这里14,12都是能整除2的偶数,对2取余结果为0,
0==0
结果为True,
0==1
结果为False。and左右两边结果都为True的时候结果就是True,所以if语句中的判断条件为True,故选A。
7、下面Python代码执行后的输出是( )。
cnt = 0
for i in range(5):
cnt = cnt + 1
print(cnt)
-
标准答案:C
-
试题解析:本题属于考察循环和基本运算,题目将for循环和range()函数结合,实现循环加1的操作,range()函数中只有一个参数,代表结束值,默认起始值为0,遍历不包括结束值。range(5)就是遍历5次,即0,1,2,3,4。每遍历一次cnt的值加1,cnt初始值为0,所以最后cnt为5,故选C。
8、下面Python代码执行后的输出是( )。
tnt = 0
for i in range(1, 5, 2):
tnt = tnt + i
print(tnt)
-
标准答案:B
-
试题解析:本题属于考察循环和基本运算,题目将for循环和range()函数结合,实现循环加i的操作。range()函数中有三个参数,从左到右分别代表起始值,结束值,步长。步长值就是相邻两个数之间的差值。如range(0,5,2),即从0开始,到5结束,取不到5,步长为2,依次取到0,2,4。所以遍历循环range(1,5,2)得到的i值就是1,3。同时tnt初始值为0,每次循环增加相应的i,所以循环结束tnt为4,故选B。
9、下面Python代码执行后的输出是( )。
n = 5
cnt = 1
while n >= 0:
cnt += 1
n -= 2
print(cnt)
-
标准答案:B
-
试题解析:本题属于考察while循环和基本算术运算。循环的条件是变量n大于等于0,满足条件将cnt加1,n减少2。题目中n的初始值为5,故循环执行3次,再执行第四次的时候n为-1,不满足循环条件,结束循环。cnt的初始值为1,三次循环后cnt为4。故选B。
10、下面Python代码用于输出所有能整除的数,如10输出成1、2、5和10,12输出为1、2、3、4、6和12,17则输出1和17。在横线处应填入代码是( )。
n = input("请输入一个正整数:")
n = int(n)
for i in __________:
if n % i == 0:
print(i)
-
A. range(n)
-
B. range(n+1)
-
C. range(1,n)
-
D. range(1, n+1)
-
标准答案:D
-
试题解析:本题属于考察输入语句input()函数,for循环语句和range()函数的结合使用。题目要求输出n所有能整除的数,所以应遍历到1到n之间的每个数。range()函数有两个参数时,从左到右依次是开始值,结束值,因为左闭右开原则,右侧结束数不包括,遍历过程中取不到结束值,故选择D。
11、下面Python代码执行后输出的正确图形是( )。
import turtle
turtle.pencolor("RED")
turtle.pensize(5)
for i in range(4):
turtle.forward(50)
turtle.left(90)
-
标准答案:B
-
试题解析:本题属于考察turtle绘图库的使用和for循环。首先导入turtle库,使用了pencolor(“RED”)函数设置了画笔画出线条的颜色为红色。使用了pensize(5)设置画笔宽度为5。其次,for循环执行4次,每次循环执行forword(50),left(90)。forword(50)函数为向当前画笔方向移动50像素长度。left(90)函数设置了左转90度。最后箭头应该是回到初始位置初始方向,通过看箭头的位置和方向,故选B。
12、为输出下面的图形,应在下面Python代码横线处填入代码是( )。
import turtle
turtle.pencolor("RED")
turtle.pensize(5)
for i in range(6):
turtle.forward(50)
turtle.left(__________)
-
标准答案:B
-
试题解析:本题属于考察turtle绘图库的使用和for循环。首先导入turtle库,使用pencolor(“RED”)函数设置了画笔画出线条的颜色为红色。使用了pensize(5)设置画笔宽度为5。其次,for循环执行6次,最后实现一个六边形。因为多边形外角和等于360度,六边形共有六个角,因此每次要左转60度,故选B。
13、下面Python代码执行后输出的正确图形是( )。
import turtle
turtle.left(90)
turtle.forward(80)
turtle.right(90)
turtle.forward(80)
turtle.home()
turtle.circle(80, 90)
-
标准答案:A
-
试题解析:本题属于考察turtle绘图库的使用,forword(n)函数为向当前画笔方向移动n像素长度。left(n)函数设置了左转n度。home()设置当前画笔返回原点,即回到初始状态。circle(radius,extent)函数绘制一个radius指定半径的圆。圆心在海龟左边radius个单位;extent为一个夹角,用来决定绘制圆的一部分。如未指定extent则绘制整个圆。如果extent不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。circle(80,90)表示绘制一个半径为80,圆心位于(0,80),圆心角度为90度。故选A。
14、下面Python代码执行后输出的正确图形是( )。
import turtle
for i in range(5):
turtle.penup()
turtle.goto(i * 40, 0)
turtle.pendown()
turtle.circle(40, steps=4)
-
标准答案:B
-
试题解析:本题属于考察turtle绘图库的使用和for循环。首先导入turtle库,循环遍历5次,每次执行的代码为:使用penup()函数将画笔抬起,使用goto()函数让海龟移动到一个绝对坐标,不改变海龟的朝向。使用pendown()函数实现画笔落下,在移动移动时将画线。使用circle(radius,steps=n)函数是绘制一个radius半径的圆内切正n边形,圆是以其内切正多边形来近似表示的,其边的数量由steps指定。circle(40,steps=4)为对角线为80的正多边形。又因为每次x的位置增加40,所以第一个正多边形的最右侧顶点与第二个正多边形的下顶点有相同的x值。应该选B。
15、下面Python代码执行后输出的图形是( )。
import turtle
for i in range(1,10,2):
turtle.goto(i * 40, 0)
turtle.forward(40)
turtle.right(90)
turtle.forward(40)
turtle.right(90)
turtle.forward(40)
turtle.right(90)
turtle.forward(40)
turtle.right(90)
-
标准答案:C
-
试题解析:本题属于考察turtle绘图库的使用和for循环。首先导入turtle库,循环遍历5次。使用了right()函数实现右转,所以每次循环都画一个在X轴下方边长为40的正方形。排除D选项,同时使用了goto()函数,会先绘制一段长为40的直线,所以A,B选项排除。结合代码,从(80,0)的位置进行第一次右转,第一个正方形绘制完成结束位置为(40,0),故选C。
二、判断题(共10题,每题2分,共20分)
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
√
|
√
|
×
|
×
|
×
|
√
|
√
|
×
|
×
|
√
|
1、早期计算机内存不够大,可以将字库固化在一个包含只读存储器的扩展卡中插入计算机主板帮助处理汉字。
-
标准答案:√
-
试题解析:本题考察计算机历史。早期的计算机使用中,因为计算机的处理能力有限,为了提高计算机的效率,减少在汉字输入过程中对存储器的频繁访问,研制了汉卡。使用汉卡可以有效的提高计算机的速度,尽可能的减少占用计算机内存空间。但汉卡存在与其它硬件冲突的问题。随着计算机硬软件技术的进步,计算机的处理能力有了飞速的提高,因此汉卡的使用越来越少。
2、神威·太湖之光超级计算机是中国自主研制的超级计算机,在全球超级计算机TOP500排行榜中多次荣膺榜首。
-
标准答案:√
-
试题解析:本题考察计算机历史。榜首意思是榜上公布的名单中的首位,泛指第一名。神威·太湖之光超级计算机是由国家并行计算机工程技术研究中心研制,安装在国家超级计算无锡中心的超级计算机。2016年6月20日,德国法兰克福国际超算大会(ISC)公布了新一期全球超级计算机TOP500榜单,由国家并行计算机工程技术研究中心研制的“神威·太湖之光”以超第二名近三倍的运算速度夺得第一。之后多次荣膺榜首。
3、Python表达式 int(“3.14”) 的值为3。
-
标准答案:×
-
试题解析:本题考察基本数据类型中的数据类型转换的int()函数。int()函数可以将字符串转换为整数,但如果字符串内是带小数的,就会出现类型转换错误。int()函数要求输入数字或者整数字符,如果要将3.14转换为整数,可以先float()然后int()转换。故本题错误。
4、Python语句 print(2, 3, “23”) 的输出为 2,3,23。
-
标准答案:×
-
试题解析:本题考察输出语句print()函数输出格式。print()函数输出多个内容默认中间使用逗号隔开,输出顺序为从左向依次输出,中间用空格隔开,不是逗号隔开。
5、Python内置函数 range(10, 2) 表示从0开始到10结束但不包含10,间隔为2。
-
标准答案:×
-
试题解析:本题考察for循环结构中range()的使用。range(start, end)函数中有两个参数时,start代表开始值,end代表结束值。
6、Python表达式 “10”*2+“10” 的值为’101010’。
-
标准答案:√
-
试题解析:本题考察Python字符串的基本操作。Python中定义字符串型*整型,代表将字符串重复N次,题目中的正确结果应该为"1010"。Python中定义两个字符串相加时,代表两个字符串进行拼接,所以最终为’101010’。单引号或者双引号引起来的都表示字符串,故结果正确。
7、在Python中,for-in循环不可能导致死循环,⽽while有可能。
-
标准答案:√
-
试题解析:本题考察Python中for-in循环语句和while循环语句。死循环是一种常见的编程概念,它可以让程序永远执行下去。for循环语句遍历一个可迭代的元素,当所有元素遍历完毕后,循环自动停止,while循环只要循环条件为真(True)就可以一直执行循环体。
8、在下面的Python代码中,由于循环中的continue是无条件被执行,因此将导致死循环。
for i in range(1, 10):
continue
-
标准答案:×
-
试题解析:本题考察Python中for-in循环语句和流程控制continue关键字的掌握。死循环可以让程序永远执行下去。题目中i取值为从1到9,只执行9次,就结束循环。故本题错误。
9、在Python代码中,turtle.home() 清除画面,海龟回到原点,朝向置为默认方向。
-
标准答案:×
-
试题解析:本题考察turtle绘图库中home()函数的使用。home()函数不清除画面,海龟回到原点,朝向置为默认方向。reset()函数海龟回到原点并设置所有变量为默认值。故本题错误。
10、在Python代码中,可以用 turtle.circle() 绘制正多边形。
-
标准答案:√
-
试题解析:本题考察turtle绘图库circle()函数的使用。使用circle(radius,steps=n)函数是绘制一个radius半径的圆内切正n边形,圆是以其内切正多边形来近似表示的,其边的数量由steps指定。故本题正确。
三、编程题(共2题,共50分)
1、买文具
-
试题名称:买文具
-
时间限制:1.0 s
-
内存限制:128.0 MB
【问题描述】
开学了,小明来到文具店选购文具。签字笔2元一支,他需要
X
X
X
支;记事本5元一本,他需要
Y
Y
Y
本;直尺3元一把,他需要
Z
Z
Z
把。小明手里有
Q
Q
Q
元钱。请你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
【输入描述】
输入4行。
第一行包含一个正整数
X
X
X
,是小明购买签字笔的数量。约定
1
≤
X
≤
10
1\leq X\leq10
1
≤
X
≤
10
。
第二行包含一个正整数
Y
Y
Y
,是小明购买记事本的数量。约定
1
≤
Y
≤
10
1\leq Y\leq10
1
≤
Y
≤
10
。
第三行包含一个正整数
Z
Z
Z
,是小明购买直尺的数量。约定
1
≤
Z
≤
10
1\leq Z\leq10
1
≤
Z
≤
10
。
第四行包含一个正整数
Q
Q
Q
,是小明手里的钱数(单位:元)。
【输出描述】
输出2行。如果小明手里的钱够买他需要的文具,则第一行输出"Yes",第二行输出小明会剩下的钱数(单位:元);否则,第一行输出"No",第二行输出小明缺少的钱数(单位:元)。
【样例输入1】
1
1
1
20
【样例输出1】
Yes
10
【样例输入2】
1
1
1
5
【样例输出2】
No
5
参考程序:
x = int(input())
y = int(input())
z = int(input())
q = int(input())
s = q - (2*x+5*y+3*z)
if s>=0:
print("Yes")
print(s)
else:
print("No")
print(-1*s)
2、小明的幸运数
-
试题名称:小明的幸运数
-
时间限制:1.0 s
-
内存限制:128.0 MB
【问题描述】
所有个位数为
k
k
k
的正整数,以及所有
k
k
k
的倍数,都被小明称为“
k
k
k
幸运数”。小明想知道正整数
L
L
L
和
R
R
R
之间(包括
L
L
L
和
R
R
R
)所有
k
k
k
幸运数的和,你能帮帮他吗?
【输入描述】
输入3行。第一行包含一个正整数
k
k
k
,第二行包含一个正整数
L
L
L
,第三行包含一个正整数
R
R
R
。约定
2
≤
k
≤
9
2\leq k \leq 9
2
≤
k
≤
9
,
1
≤
L
≤
R
≤
1000
1 \leq L \leq R \leq 1000
1
≤
L
≤
R
≤
1000
。
【输出描述】
输出1行,符合题意的幸运数之和。
【样例输入1】
7
1
10
【样例输出1】
7
【样例解释1】
1和10之间共有1个7幸运数:7。因为7既是7的倍数,个位数⼜为7。因此,结果为7。
【样例输入2】
7
10
20
【样例输出2】
31
【样例解释2】
10和20之间共有2个7幸运数:14和17。14是7的倍数,17的个位数为7。因此,结果为31。
参考程序:
k = int(input())
L = int(input())
R = int(input())
s = 0
for i in range(L, R + 1):
if i % 10 == k or i % k == 0:
s += i
print(s)
k = int(input())
L = int(input())
R = int(input())
lst = [i for i in range(L, R + 1) if i % 10 == k or i % k == 0]
print(sum(lst))