CCF GESP Python 一级 2024年6月真题解析
一、单选题(每题 2 分,共 30 分)
1、小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )
A. 1
B. 2
C. 3
D. 4
答案:C
解析:scratch、Python、C++三种语言
2、ENIAC于1946年投入运行,是世界上第一台真正意义上的计算机,它的主要部件都是( )组成的。
A. 感应线圈
B. 电子管
C. 晶体管
D. 集成电路
答案:B
3、在Python中,假设N为正整数,则表达式 print(N % 3 + N % 7) 的最大值是( )。
A. 最大值为6
B. 最大值为8
C. 最大值为9
D. 最大值为10
答案:B
解析:%是求余数,N%3 --> 余数的最大值为2,N%7 --> 余数的最大值为6,2+6=8
4、Python语句 print(f"5%2={5%2}",5 % 2) 执行后的输出是( )。
A. 1={1} 1
B. 5%2={5%2}1
C. 5%2={5%2} 1
D. 5%2=1 1
答案:D
解析:
1、print(f)是一种格式化输出
2、f后面双引号中的字符串原样输出
3、{ }中写变量或者表达式,输出时会将其结果输出
4、print中默认用空格键分隔
5、执行Python语句 print(input()) 时如果输入5+2,下述说法正确的是( )。
A. 将输出整数7
B. 将输出5+2
C. 语句执行将报错,函数不能作为函数的参数
D. 语句执行将报错,因为input()函数的括号内没有提示字符串
答案:B
解析:
1、input()函数用于从用户那里获取输入
2、输入5+2时,Python会将其视为字符串输入
3、查看数据类型:print(type(input())),输出结果为str类型,str = 字符串类型
4、int()函数不能直接处理包含运算符的字符串
6、下面Python代码执行后的输出是( )。
a = 101.101
a = 101
print(f"a+1={a+1}")
A. 102={102}
B. a+1={a+1}
C. a+1=102
D. a先被赋值为浮点数,后被赋值为整数,执行将报错
答案:C
解析:
1、print(f)是一种格式化输出
2、f后面的字符串原样输出
3、{ }中写变量或者表达式,输出时会将其结果输出
7、下面Python代码执行后的输出是( )。
a = "5"
b = 5
print(f"{a}+{b}")
A. 5+5
B. 5+‘5’
C. 10
D. 55
答案:A
解析:
1、print(f)是一种格式化输出
2、f后面的字符串原样输出
3、{ }中写变量或者表达式,输出时会将其结果输出
4、双引号的区别,定义变量和输入时要带双引号,输出时没有双引号了
a = "5"
print(f"{a}")
运行结果为:5
8、下面Python代码执行时输入10后,正确的输出是( )。
N = int(input("请输入正整数:"))
if N % 3:
print("第3行代码", N % 3, sep = "")
else:
print("第4行代码", N % 3, sep = "")
A. 第3行代码1
B. 第4行代码1
C. 第3行代码 1
D. 第4行代码 1
答案:A
解析:
1、N % 3 = 1
2、sep = “” 双引号中什么都没有,所以是取消空格键
3、在Python中,当我们使用print函数输出多个值时,默认情况下这些值之间会用空格隔开,并且在最后自动换行。
4、sep参数用于指定多个输出值之间的分隔符。默认情况下,sep的值是一个空格,但我们可以将其设置为任何我们想要的字符串。
例如:print(“apple”, “banana”, “cherry”, sep=“, “)
输出结果:apple, banana, cherry
例如:print(“apple”, “banana”, “cherry”, sep=”&&”)
输出结果:apple&&banana&&cherry
5、end参数则用于指定输出结束后的字符或字符串。默认情况下,end的值是一个换行符,这意味着每次调用print函数后都会自动换行。
例如:print(“Hello world!”)
print(“How are you?”)
输出结果:Hello world!
How are you?
例如:print(“Hello, world!”, end=“.”)
print(" How are you?")
输出结果:Hello, world!. How are you?
例如:print(“Hello”,“world!”,sep = “,”,end=“.”)
print(“How are you?”)
输出结果:Hello, world!. How are you?
9、下面Python代码执行后,最终输出是( )。
Sum = 0
for i in range(10):
Sum += i
print(i,Sum)
A. 9 45
B. 10 55
C. 10 45
D. 11 55
答案:A
10、下面Python代码用于判断N是否为质数(只能被1和它本身整除的正整数)。程序执行后,下面有关描述错误的是( )。
N = int(input("请输入整数:"))
Flag = False
if N >= 2:
Flag = True
for i in range(2,N):
if N % i == 0:
Flag = False
break
if Flag == True:
print("是质数")
else:
print("不是质数")
A. 如果输入负整数,将输出“不是质数”
B. 如果输入2,将输出“是质数”,因为Flag已被改变为True
C. 如果输入2,将输出“是质数”,即便此时循环体没有被执行
D. 如果将 if N >= 2: 改为 if N > 2: 同样能正确判断N是否质数
答案:D
解析:
1、A答案:质数不可以是负数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。这个定义明确排除了负数,因为负数不满足质数的定义条件。
2、B答案:说法正确
3、C答案:说法正确,循环体没有被执行,range(2,2)
4、D答案:2是质数
11、下面的Python代码用于求1-N之间所有奇数之和,其中N为正整数,如果N为奇数求和时包括N。有关描述错误的是( )。
N = int(input("请输入正整数:"))
i = 1
Sum = 0
while i <= N:
if i % 2 == 1:
Sum += i
i += 1
print(i,Sum)
A. 执行代码时如果输入10,则最后一行输出将是 11 25
B. 执行代码时如果输入5,则最后一行输出将是 6 9
C. 将 i += 1 移到 if i % 2 == 1: 前一行且同样对齐,同样能实现题目要求
D. 删除 if i % 2 == 1: ,并将 i += 1 改为 i += 2 ,且将 Sum += i 与 i += 2 同样对齐,同样可以实现
题目要求
答案:C
解析:移动完成后会先改变i的值,导致sum结果值不正确
12、下面Python代码执行后的描述,正确的是( )。
import turtle
for i in range(1,10,2):
if i % 3 == 0:
turtle.pencolor("red")
else:
turtle.pencolor("blue")
turtle.forward(50)
A. 共有5条线段,蓝红相间,即蓝红蓝红蓝
B. 共有3条线段,全部是蓝色,看起来是1条线段
C. 共有6条线段,其中两条红色线段,4条蓝色线段
D. 以上说法都不正确
答案:D
解析:共有5条线段,蓝红蓝蓝红
13、下面Python代码执行后的描述,错误的是( )。
import turtle
turtle.circle(100)
turtle.circle(100, 360, 8)
turtle.circle(100, 180, 4)
A. 代码 turtle.circle(100) 将绘制一个半径为100的圆
B. 代码 turtle.circle(100, 360, 8) 将绘制半径为100的完整内接正八边形
C. 代码 turtle.circle(100, 360, 8) 将绘制半径为100的宽度为8的圆
D. 代码 turtle.circle(100, 180, 4) 将绘制半径为100的正八边形的右侧一半(4条边), 因为 第2个参数是
180度(只绘制一半)且第3个参数为4(只绘制出4个边)。
答案:C
解析:代码 turtle.circle(100, 360, 8)含义:①半径为100;②绘制360°;③边数为8。
14、下面Python代码执行后输出的图形如下,横线处应填写的代码是( )。
import turtle
for d in range(10,_______,10):
turtle.left(90)
turtle.forward(d)
A. 120
B. 110
C. 100
D. 90
答案:C
解析:
1、数边数,共9条边
2、初始值为10,线段长度每次增加10
15、 为画出如下所示图形,下面Python代码横线处应填入( )。
import turtle
for i in range(4):
turtle.circle(50)
turtle.left(__________)
A. 360
B. 180
C. 90
D. 45
答案:C
二、判断题(每题 2 分,共 20 分)
第 1 题 GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。(对)
第 2 题 Python语句 print(N // 3,N % 3, N ** 3, sep = “->”,end = “END”)中的N已被赋值为10,则该语句执行后输出是3->1->1000->END。(错)
解析:输出为3->1->1000END
第 3 题 Python语句 print(int(float(input()))) 可以输入正负整数和浮点数,并将其转换为整数后输出。(对)
第 4 题 Python语句 print(f"{N}×2") 中的N已被赋值为5。该语句执行后将输出10。(错)
解析:输出为5×2
第 5 题 在Python中,break语句用于终止当前层次的循环,可以是for-in循环,也可以是while循环。(对)
第 6 题 在Python,continue语句通常与if语句配合使用。(对)
第 7 题 在Python代码中,不可以将变量命名为print,因为print是Python语言的关键字。(错)
解析:print不是关键字,print是一个内置函数,内置函数名称不能用作变量名。
使用以下代码查看Python中的关键字
import keyword
print(keyword.kwlist)
运行结果为:
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
第 8 题 在Python turtle中,turtle.forward()与turtle.fd()具有相同的功能。(对)
第 9 题 Python代码turtle.clear()可以清除海龟绘图,且海龟将回到原点。(错)
解析:使用turtle.clear()可以清除turtle图形窗口中的所有图形,但是海龟的位置不会改变。如果希望海龟回到原点,你需要使用turtle.home()函数。
import turtle as t
t.fd(100)
t.home() # 回到原点
t.clear() # 清除图形
第 10 题 下面Python代码执行后将绘制正多边形,如输入5将绘制正5边形,输入8将绘制正8边形,以此类推。(对)
import turtle
N = int(input("请输入正整数:"))
for i in range(N):
turtle.forward(100)
turtle.left(360/N)
三、编程题(每题 25 分,共 50 分)
3.1 编程题 1
试题名称:休息时间
时间限制:1.0 s
内存限制:512.0 MB
3.1.1 题面描述
小杨计划在某个时刻开始学习,并决定在学习k秒后开始休息。
小杨想知道自己开始休息的时刻是多少。
3.1.2 输入格式
前三行每行包含一个整数,分别表示小杨开始学习时刻的时h 、分m 、秒s (h,m,s 的值符合 1<= h <= 12,0 <= m <= 59,0 <= s <= 59)。
第四行包含一个整数k ,表示小杨学习的总秒数(注: k的值符合 1 <= k <= 3600)。
3.1.3 输出格式
输出一行,包含三个整数,分别表示小杨开始休息时刻的时、分、秒。
3.1.4 样例1
12
59
59
10
13 0 9
3.1.5 样例解释
小杨在时刻 12:59:59 开始学习,学习 秒后开始休息,即在 13:0:9 时刻开始休息。
3.1.6 数据范围
对于全部数据,保证有1<= h <= 12,0 <= m <= 59,0 <= s <= 59 , 1 <= k <= 3600 。
3.1.7 参考程序
上课讲解代码:
h = int(input())
m = int(input())
s = int(input())
ks = h*3600+m*60+s # sk = 开始时刻,单位是秒
k = int(input()) # k = 小杨学习的总秒数
xx = ks+k # xx = 休息时刻,单位是秒
hh = int(xx/3600) # 将休息时刻转换成小时hh、分钟mm、秒钟ss
mm = int(xx%3600/60)
ss = int(xx%60)
print(f"{hh} {mm} {ss}")
参考代码1:
h = int(input())
m = int(input())
s = int(input())
k = int(input())
now = h * 3600 + m * 60 + s + k
h = int(now / 3600)
m = int(now %3600/ 60)
s = int(now % 60)
print(f"{h} {m} {s}")
# print(str(h)+" "+str(m)+" "+str(s))
参考代码2:来自官方
3.2 编程题 2
试题名称:立方数
时间限制:1.0 s
内存限制:512.0 MB
3.2.1 题面描述
小杨有一个正整数n,他想知道n是否是一个立方数。
一个正整数n是立方数当且仅当存在一个正整数x满足 xxx = n 。
3.2.2 输入格式
第一行包含一个正整数n。
3.2.3 输出格式
如果正整数n是一个立方数,输出 Yes,否则输出 No。
3.2.4 样例1
8
Yes
3.2.5 样例2
9
No
3.2.6 样例解释
对于样例1,存在正整数2使得 8 = 222,因此8为立方数。
对于样例2,不存在满足条件的正整数,因此9不为立方数。
3.2.7 数据范围
对于全部数据,保证有1<= n <= 1000 。
3.2.8 参考程序
参考代码1:
n = int(input())
s = 0
for i in range(1,n+1):
if i*i*i == n:
s = 1
break
if s == 1:
print("Yes")
else:
print("No")
参考代码2:来自官网