全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛)是“世界机器人大会青少年机器人设计与信息素养大赛”赛事之一,由中国电子学会主办,包含很多赛项,大赛自2013年举办,已连续成功举办八届,已正式入围“2022-2025学年面向中小学生的全国性竞赛活动名单”。
大赛旨在激发广大青少年的科学兴趣和想象力,培养钻研探究、创新创造的科学精神和实践能力,促进青少年科技创新活动的广泛开展,发现和培养一批具有科研潜质和创新精神的青少年科技创新后备人才。
大赛主要竞赛类别包括电子科技、智能机器人、软件编程三类,全国青少年Python编程挑战赛就属于其中的软件编程类。
一.赛事说明
2021-2022年(第8届)Python挑战赛赛程分为初赛、复赛和总决赛三个阶段。初赛是资格赛,复赛是地方选拔赛,总决赛是全国各地选拔的精英汇聚在一起进行PK。
本届Python挑战赛是在线上举行,参赛选手登录大赛官网在指定页面完成答题并提交答案。评定成绩的依据是同时考虑得分和用时两个方面,首先是得分高者名次靠前,如果得分一样,则用时少者名次靠前。
二.试题说明
2021-2022年Python编程挑战赛初赛于2022年5月8日正式举行,初赛题型为单选题,题目按赛项分类随机产生,一共10道选择题,答题时间为30分钟。
由于系统是随机出题,超平老师不保证每个同学做的题目都和下面列出来的一致,但这些题目都是真题。
初赛选手提交答卷之后,系统会马上显示选手的得分。
三.真题解析
第1题
执行下列代码,能输出的数字有( )。
from random import *
x = randint (0,3)
print(x)
A. 0, 1, 2, 3
B. 1, 2, 3, 4
C. 1, 2. 3, 6
D. 0, 1, 1.5, 2, 3
[超平老师解读]:
本题的正确答案是A,考查的知识点是random库。
random是Python自带的标准库,其作用是用于生成随机数,包含8个函数。其中,randint函数最为常见,它的功能是随机产生一个介于两个指定值之间的整数(包含两个指定值),所以选A。
第2题运行下列代码,程序的输出结果是( )。
x = 2
y = 3
if x > 2:
print("-月")
else:
if y > 2:
print("二月")
else:
print("三月")
A. 一月B. 二月C. 三月D. 以上选项均错误
[超平老师解读]:
本题的正确答案是B,考查的知识点是if…else语句的嵌套。
x = 2,所以 x > 2 条件不成立,此时程序会执行外层的else后面的内容;再来判断y的情况,y = 3,因此 y > 2 为条件成立,所以代码会输出字符串“二月”。
第3题
下列选项中,可以正确在横线处补全代码的是( )。
print("哪种水果视力最差?a.芒果b.西瓜c.榴莲")
ans = input("请输入你的回答:")
if ans == "a":
print("恭喜你答对啦")
______
print("很抱歉你答错了")
A. if
B. if:
C. else
D. else:
[超平老师解读]:
本题的正确答案是D,考查的知识点是if…else语句的正确写法。在Python编程中,和if配套的有elif和else,不管是哪一种,后面都必须带上冒号,所以只有D选项是正确的。
第4题执行下列代码,变量number的值为( )。
number = 11
number = number + 1
A. 1
B. 11
C. 12
D. number
[超平老师解读]:
本题的正确答案是C,考查的知识点是变量运算。
第一行代码的意思是设置一个变量number,其初始值设为1;第二行代码的意思是将变量number加1,再赋值给number,所以number的值就变成了12。
第5题
下列选项中,可以实现无限循环的是( )。
A. while a < 1000:
B. while True:
C. for i in range(1000):
D. for i in range(0,1000):
[超平老师解读]:
本题的正确答案是B,考查的知识点是while循环。
在Python编程中,while循环是条件循环,当条件为真时,执行循环,直到条件为假时,循环结束。很显然,True永远为真,用它当while循环的条件可实现无限循环。
第6题
下列选项中,for循环使用正确的是( )。
A. for i in range(100)
B. for i in range(100):
C. For i in range(100)
D. For i in range(100):
[超平老师解读]:
本题的正确答案是B,考查的知识点包括关键字和for语句。
第一,关键字的大小写问题,在Python编程中,大小写是有区别的,变量名和关键字都不能混淆大小写。
第二,for循环语句是一个复合语句,在for语句首行行末要有一个英文冒号。
第7题
下列说法正确的是( )。
A. 用#注释代码,#写在代码前面或者代码后面都行
B. 只能用#来进行注释
C. 注释中的内容可以是中文也可以是字母和数字
D. 以上说法都正确
[超平老师解读]:
本题的正确答案是C,考查的知识点是Python注释。
在Python编程中,用#注释代码,#一定要写在代码的后面,所以排除A选项,进而排除D选项,这样就只剩下B和C两个选项了。
除了可以使用#来进行注释,还可以使用三引号来实现多行注释,所以排除B选项。C选项的描述是正确的,注释可以是中文,也可以是英文。
第8题
下列选项中,符合python语言变量命名规则的是( )。
A. USD*&……
B. 8cny
C. 1price
D. USD_1
[超平老师解读]:
本题的正确答案是D,考查的知识点是变量的命名规则。
在Python编程中,关于变量的命名规则有如下3条:
- 由英文字母、数字和下划线组成;
- 数字不能开头;
- 不能与关键字重名;
A选项中,出现了*和&符号,所以不对,B选项和C选项中的变量都是以数字开头的,也不对,只有D选项是正确的。
需要说明的是,在Python中,变量可以使用中文,但一般不建议使用。
第9题
使用随机函数rangint之前导入库的语句是( )。
A. from turtle import *
B. from random import *
C. from randint import *
D. from import random *
[超平老师解读]:
本题的正确答案是B,考查的知识点是import的用法。
在Python编程中,导入库的关键字是import,如果要导入某个库所有的函数,其用法如下:
from 库名 import *
很显然,D选项是错误的,其次,Python中的随机库是random,因此可以排除A选项,再进一步,randint是random库中的一个函数,所以C选项也不对,只有B选项是正确的。
第10题
执行下列代码,程序输出的结果是( )。
money = 2
money = 10
money = 5
money = 8
print(money)
A. 2
B. 10
C. 5
D. 8
[超平老师解读]:
本题的正确答案是D,考查的知识点是顺序结构。
在Python中,顺序结构是指程序自上而下执行顺序结构的每一个语句。在上面的代码中,最后一次给变量money赋值之后,该变量的值为8,所以输出结果是8。
四.总结与思考
本次初赛一共10道选择题,题目也比较简单,考查的知识点包括如下几个方面:
- Python基本语法,包括代码的书写格式和注释等;
- 变量,包括命名规范、赋值和运算;
- 导入标准库的方式;
- random库的使用;
- 循环语句,包括for循环和while循环;
- 选择结构,重点是if…else语句的使用及其嵌套;
从知识点的分布情况来看,主要还是考查学生对Python基础知识的掌握情况,这也是每一个孩子学习编程时要掌握的基本功。