全国青少年软件编程等级考试 (Python 语言)2021年真题下载

全国青少年软件编程等级考试 (Python 语言)2020年真题

全国青少年软件编程等级考试 (Python 语言)2021年真题

全国青少年软件编程等级考试 (Python 语言)2022年真题

全国青少年软件编程等级考试 (Python 语言)2024年真题

全国青少年软件编程等级考试标准 (Python 语言)

青少年软件编程(Python)等级考试试卷(一级)

分数:100.00 题数:37

一、单选题(共25题,每题2分,共50分)

  1. 取整除的运算符是?( ) A、 / B、 // C、 ÷ D、** 题型:单选题 答案:B 难度:一般 试题解析:B

  2. 下面的程序为海龟绘制正方形的程序,请选择正确选项将程序补全?( ) import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(    ) turtle.forward(100) turtle.left(90) A、90 B、-90 C、0 D、180 题型:单选题 答案:A 难度:一般 试题解析:

  3. 已知a = 5,a *= 2,那么print(a)的结果为?() A、5 B、2 C、10 D、20 题型:单选题 答案:C 难度:一般 试题解析:x *=2 执行过程其实是x = x * 2所以最终的到结果为10,故选择C选项。

  4. Python程序保存后的扩展名是?( ) A、.pyt B、.py C、.pn D、.ph 题型:单选题 答案:B 难度:容易 试题解析:Python程序设计语言的源程序是以.py为扩展名

  5. 关于turtle,以下描述错误的是?( ) A、 turtle中的画笔不能设置不同的形状 B、 turtle中的画笔可以设置移动的速度 C、 turtle中的画笔可以设置不同的颜色 D、 turtle中的画笔可以设置不同的大小 题型:单选题 答案:A 难度:一般 试题解析:A

  6. 运行以下代码,print(2021<=2020 or 2022>2018) 输出的结果是?( ) A、Flase B、True C、20212018 D、2022>2018 题型:单选题 答案:B 难度:一般 试题解析:

  7. print("17 + 2")输出的结果是?( ) A、"17 + 2" B、19 C、172 D、17 + 2 题型:单选题 答案:D 难度:一般 试题解析:

  8. turtle.goto(x,y)的含义为下列选项的哪一个?( ) A、以目前坐标为原点,画一个边长为x和y的矩形 B、画笔提笔,移动到x,y的位置 C、按照现在画笔状态,将画笔移动到坐标为x,y的位置 D、将目前原点移动到x,y的位置 题型:单选题 答案:C 难度:一般 试题解析:

  9. turtle.circle(150,steps=5)命令能绘制出以下哪个图形?( ) A、直径(从顶点到图形中心的距离的2倍)为150像素的圆内接正五边形 B、半径(从顶点到图形的中心)为150像素的圆内接正五边形 C、半径(从顶点到图形的中心)为150像素的圆内接五角星 D、边长为150像素的正五边形 题型:单选题 答案:B 难度:较难 试题解析:B

  10. 关于Python的编程环境,下列表述是错误的是?( ) A、 Python有多种编程环境 B、 Python自带的编程环境是IDLE C、 Python的编程环境是纯图形化的 D、Python可以导入多个第三方库 题型:单选题 答案:C 难度:一般 试题解析:C

  11. 下面哪一条命令是用来定义画笔宽度的?( ) A、turtle.pencolor() B、turtle.speed() C、turtle.pensize() D、turtle.shape() 题型:单选题 答案:C 难度:容易 试题解析:

  12. 请观察以下数字的规律:2+6,3+8,4+10,( ),6+14,请问括号中应该填写什么?( ) A、5+11 B、5+12 C、4+9 D、6+13 题型:单选题 答案:B 难度:一般 试题解析:

  13. 海龟绘图时,使用speed(n),当n的值是多少时,绘图的速度最快?( ) A、3 B、2 C、1 D、0 题型:单选题 答案:D 难度:一般 试题解析:此题考查speed()函数的使用方法,n=1(慢)~10(快),0(最快),故答案选择D选项

  14. print(51%10)输出的结果是?( ) A、1 B、0 C、True D、False 题型:单选题 答案:A 难度:一般 试题解析:

  15. 下列哪个函数的功能是进行输出?( ) A、print() B、input() C、get() D、range() 题型:单选题 答案:A 难度:容易 试题解析:用来输出内容的函数是print(),故选项A正确。

  16. print(4+6*2+8)的结果是?( ) A、100 B、24 C、64 D、28 题型:单选题 答案:B 难度:一般 试题解析:混合运算顺序

  17. 下面print语句,哪一个是正确的用法?( ) A、print"(welcome!)" B、print("welcome"!) C、print("welcome!') D、print("welcome!") 题型:单选题 答案:D 难度:一般 试题解析:

  18. turtle回到原点的命令是?( ) A、 hideturtle() B、 clear() C、 circle() D、 home() 题型:单选题 答案:D 难度:容易 试题解析:D

  19. 逻辑运算符中(注意不是所有的运算符,只是逻辑运算符),优先级最高的是?( ) A、or B、and C、not D、** 题型:单选题 答案:C 难度:一般 试题解析:

  20. 观察下面的程序,运行结果为?( ) a=8 a+=1 print(a) a*=10 print(a) a**=2 print(a) A、9 B、90 C、8100 D、 9   90  8100 题型:单选题 答案:D 难度:一般 试题解析:

  21. a="Python2",b="Python3",c=a+b,print(c)的结果是?( ) A、5 B、Python5 C、c D、Python2Python3 题型:单选题 答案:D 难度:一般 试题解析:

  22. a=1.27 print (eval('a+10')) 上述代码的执行结果是?(  ) A、1.2710 B、系统报错 C、11.27 D、1.27+10 题型:单选题 答案:C 难度:一般 试题解析:

  23. 使用哪个函数可以把字符串'123'转换为整型123?( ) A、num() B、str() C、float() D、int() 题型:单选题 答案:D 难度:一般 试题解析:

  24. 关于变量的说法,错误的是?( ) A、变量必须要命名 B、变量第二次赋值后,第一次赋的值将被删除 C、变量可以用来存储数字,也可以存储文字 D、在同一个程序里,变量名能重复 题型:单选题 答案:D 难度:一般 试题解析:

  25. 关于Python的编程环境,下列的哪个表述是不正确的?( ) A、Python自带的编程环境是IDLE B、下载安装好Python软件后,无需单独下载IDLE C、IDLE的交互式编程模式中,可以一次写入多行无缩进的语句代码,然后进行运行 D、为了保存编写的代码,我们通常使用IDLE中的脚本式编程模式 题型:单选题 答案:C 难度:一般 试题解析: 二、判断题(共10题,每题2分,共20分)

  26. 运行下列Python代码后,a和b的数据类型均为字符串。  代码: a ='5' b ="6" 题型:判断题 答案:正确 难度:一般 试题解析:

  27. 在turtle库中,画笔的起点在画布的正中央,turtle.goto()、turtle.setx()和turtle.sety()使用的都是基于中心点(0,0)的绝对坐标。 题型:判断题 答案:正确 难度:一般 试题解析:

  28. turtle.shape("square")命令可以将 turtle 形状设置为海龟。 题型:判断题 答案:错误 难度:一般 试题解析:

  29. and是Python中常用的保留字,不可以作为变量名。 题型:判断题 答案:正确 难度:一般 试题解析:

  30. Python的IDLE编程中有交互式和脚本式两种编程方式。 题型:判断题 答案:正确 难度:一般 试题解析:

  31. 程序:a=b中,a是变量,b是值。 题型:判断题 答案:正确 难度:一般 试题解析:

  32. from,False,improt,as是Python中常用保留字,不可以作为变量名。 题型:判断题 答案:正确 难度:一般 试题解析:

  33. input()语句是用来输入一个指令。 题型:判断题 答案:错误 难度:一般 试题解析:

  34. 语句: b=3 c=a+b print(c) 的显示结果是3。 题型:判断题 答案:错误 难度:一般 试题解析:

  35. Python代码的注释只有一种方式,那就是使用#符号。 题型:判断题 答案:错误 难度:一般 试题解析: 三、编程题(共2题,共30分)

  36. 龟兔赛跑,兔子刚开始跑得非常快,但是兔子太骄傲了,在领先乌龟100米时,自行休息睡着了,乌龟一步一步进行追赶,乌龟的速度是V m/s(V<10),请计算出乌龟多长时间就可以追上兔子呢?要求: (1) 程序开始运行时,询问请输入乌龟爬行的速度,输入一个数字; (2) 程序根据输入的数字计算出乌龟需要多长时间就可以追上兔子; (3) 输出的格式为:“乌龟能够追上兔子所需的时间是:*秒。”。 题型:编程题 答案: 参考程序:  a=int(input("请输入乌龟爬行的速度"))  b=100/a  print("乌龟能够追上兔子所需的时间是:",b,"秒") 难度:一般 试题解析: 评分细则: 1)有输入语句;(2分) 2)有输出语句;(2分) 3)有类型转化语句;(2分) 4)有计算语句;(2分)  5)程序符合题目要求;(2分)

绘制如下图形:

添加图片注释,不超过 140 字(可选)

(1)画一个由一个正方形和一个菱形组成的图形,其中,正方形的边长为200象素,菱形的四个顶点均在正方形四条边的中点上;

(2)设置画笔速度为1;

(3)菱形的填充颜色为红色,所有线条为黑色;

(4)画图结束,隐藏并停止画笔。

题型:编程题

答案:

参考程序:            注意:仅供参考,画法和顺序,考生可以自行设计,结果符合题意即可。

import turtle  

turtle.fillcolor("red") #设置填充颜色为红色

turtle.speed(1)#设置画笔移动速度为1

turtle.forward(200)  #从当前方向移动200

turtle.left(90)#逆时针方向旋转90度

turtle.forward(200)

turtle.left(90)

turtle.forward(200)

turtle.left(90)

turtle.forward(200)

turtle.up()#抬起画笔

turtle.goto(100,0)#移动到(100,0)的位置,即菱形的第一个顶点位置

turtle.down()#放下画笔

turtle.begin_fill()#开始填充

turtle.goto(200,100)#移动到(200,100)的位置,即菱形的第二个顶点位置

turtle.goto(100,200)#移动到(100,200)的位置,即菱形的第三个顶点位置

turtle.goto(0,100)#移动到(0,100)的位置,即菱形的第四个顶点位置

turtle.goto(100,0)#移动到(100,0)的位置,即菱形的第一个顶点位置

turtle.end_fill()#填充结束

turtle.hideturtle()#隐藏画笔

turtle.done()#停止画笔等待关闭

难度:一般

试题解析:

评分细则: 1)导入库文件正确;(2分)

2)有前进命令;(2分)

3)有旋转命令并运用准确;(2分)

4)坐标计算正确,菱形的每个顶点位置0.5分;(2分)

5)有颜色工具并正确填充;(2分)

6)正确设置画笔移动速度;(2分)

7)正确隐藏画笔;(2分)

8)正确停止画笔等待关闭; (2分)

9)运行正常;(2分)

10)图像正确。(2分)

青少年软件编程(Python)等级考试试卷(二级)

分数:100.00 题数:37

一、单选题(共25题,每题2分,共50分)

  1. 有如下Python程序段: x,y=12,5 if x % y==0:     z=x/y     print(x,"/",y,"=",z) else:     z=y*x     print(x,"*",y,"=",z) 程序段执行后,输出的结果为?( ) A、x/y=2.4 B、x*y=60 C、12/5=2.4 D、12*5=60 题型:单选题 答案:D 难度:一般 试题解析:因为x%y=2,因此执行else中的语句,即z=60,输出结果为12*5=60,答案为D。

  2. 下列创建元组的方法中不正确的是?( ) A、t=(1,2,'信息') B、t=(1) C、t=('信息',) D、t='音乐','体育','美术' 题型:单选题 答案:B 难度:容易 试题解析:只有一个元素的元组,在定义时,需要添加一个逗号,t=(1,)

  3. s='语文、数学、英语、信息技术' l=s.split('、') print(l) 以上代码的运行结果为?( ) A、 ['语文', '数学', '英语', '信息技术'] B、['语文、数学、英语、信息技术'] C、 ('语文', '数学', '英语', '信息技术') D、 ('语文、数学、英语、信息技术') 题型:单选题 答案:A 难度:一般 试题解析:split() 通过指定分隔符对字符串进行切片,返回分割后的字符串列表。语法:str.split(str="",num=string.count(str)).本题中str分隔符为"、",所以被分隔为['语文', '数学', '英语', '信息技术']

  4. 已知存在字典a中有多个键值对,以下指令可以清空字典并保留变量的是?( ) A、a.remove() B、a.pop() C、a.clear() D、del a 题型:单选题 答案:C 难度:一般 试题解析:根据题意应该选择C

  5. 以下程序的运行结果是?( ) list1=[1,2,3] list1[2]=4 print(list1) A、[1,2,4] B、[1,2,3] C、[1,4,3] D、[1,4] 题型:单选题 答案:A 难度:一般 试题解析:

  6. 执行下列代码后,运行结果是?( ) l1 = [11, 22, 33] l2 = [66, 44, 22] for i in l1:     for j in l2:         if i == j:             print(i) A、True B、0 C、2 D、22 题型:单选题 答案:D 难度:困难 试题解析:掌握循环嵌套的使用

  7. 执行以下语句后的输出结果是?( ) >>> str1='My name is BeiJing' >>> print(len(str1))  A、20 B、18 C、15 D、16 题型:单选题 答案:B 难度:一般 试题解析:

  8. 列表a=[1,2,3,4,5,6,7,8,9],对列表进行切片操作,要想得到[3,5,7],以下切片正确的是?( ) A、a[-7:-2:-2] B、a[2:7:2] C、a[3:7:2] D、a[2:7:-2] 题型:单选题 答案:B 难度:容易 试题解析:

  9. 执行以下语句,将输出?( ) >>>list1=['b','c',1,2,3,4,5]  >>>list1.append('a')  >>>list1.append('a')  >>>list1 A、['b','c',1,2,3,4,5] B、['b','c',1,2,3,4,5,'a'] C、['b','c',1,2,3,4,5,'a','a'] D、无输出 题型:单选题 答案:C 难度:一般 试题解析:

  10. 不能用作if语句条件表达式的是?( ) A、x in range(6) B、3=a C、a>3 and b<10 D、x-6>5 题型:单选题 答案:B 难度:一般 试题解析:能够合理设置if语句的条件

  11. 执行以下语句后,输出的结果是?( ) >>>list2 = ['a',1, 2, 3, 4, 5 ] >>>print(list2[5])  A、5 B、4 C、3 D、提示错误 题型:单选题 答案:A 难度:一般 试题解析:

  12. alist=['cat','bat','cat','hat','cat'], 执行下列代码,输出的结果是?( ) alist.remove('cat') print(alist) A、['cat','bat','cat','hat','cat'] B、['bat','cat','hat','cat'] C、['bat','hat'] D、['cat','bat','cat','hat'] 题型:单选题 答案:B 难度:一般 试题解析:

  13. 以下创建字典的方法,正确的是?( ) A、d={学号,001,姓名,张三,成绩,98} B、d={'学号':'001','姓名':'张三','成绩':98} C、d={'学号','001','姓名','张三','成绩',98} D、d={'学号':'001';'姓名':'张三';'成绩':98} 题型:单选题 答案:B 难度:一般 试题解析:

  14. 以下代码输出的结果是?( ) for i in "Python":       if i == "t" or i == "o":             continue       print(i,end="") A、Pyhn B、Python C、Pyt D、Pytho 题型:单选题 答案:A 难度:一般 试题解析:continue的意思是“继续”,所以可以理解为:跳过本次循环的剩余代码,但循环还要继续运行

  15. 对于字典dic={1:2,'3':'d','sex':1,4:{'No':1,'name':'Mike'}},len(dic)的值是?( ) A、3 B、4 C、5 D、6 题型:单选题 答案:B 难度:一般 试题解析:

  16. 对于元组tup=(1,2,3,4,5)执行的操作非法的是?( ) A、len(tup) B、max(tup) C、min(tup) D、tup[1] = 6 题型:单选题 答案:D 难度:一般 试题解析:

  17. 水果店促销每斤苹果5元,如果购买六斤及六斤以上还可以打八折,小红去买苹果,下面的哪一个的Python程序语句可以帮小红算一下她买苹果得花多少钱(具体购买斤数由小红输入)?( ) A、 x=input("请输入斤数:") if x<6:        y=5*x else:        y=5*x*0.8 print(y) B、 x=eval(input("请输入斤数:")) if x<6:     y=5*x else:     y=5*x*0.8 print(y) C、 x=eval(input("请输入斤数:")) if x<6:     y=5*x*0.8 else:     y=5*x print(y) D、 x=input("请输入斤数:") if x<6:        y=5*x*0.8 else:        y=5*x print(y)   题型:单选题 答案:B 难度:一般 试题解析: 根据题意,当斤数x<6时,钱数y=5*x,否则,y=5*x*0.8,则以下答案正确。 x=eval(input("请输入斤数:"))#input()输入的是str类型,不能直接进行计算,所以需要eval()进行转换。 if x<6:     y=5*x else:     y=5*x*0.8 print(y)

  18. 执行下列代码后,运行结果是?( ) s="垃圾分类" i=len(s) while i>=0:     print(s[i-1])     i=i-1 A、类 分 圾 垃 B、 垃 圾 分 类 C、 垃 圾 分 类 垃 D、类 分 圾 垃 类 题型:单选题 答案:D 难度:困难 试题解析:掌握字符串长度函数的使用,理解元素索引值的变化

  19. 在列表a中存放1-100之间所有的奇数,可以有多种方法,以下哪种方法是错误的?( ) A、a=list(range(1,100,2)) B、a=range(1,101,2) C、a=[] i=1 while i<100:     a.append(i)     i+=2 D、a=[] for i in range(1,100,2):     a.append(i) 题型:单选题 答案:B 难度:一般 试题解析:range

  20. 若li=list(range(1,10,2)),则print(li)的结果是?( ) A、[0,2,4,6,8,10] B、[1,3,5,7,9] C、[1,2,3,4,5,6,7,8,9,10] D、[0,2,4,6,8] 题型:单选题 答案:B 难度:一般 试题解析:掌握range函数以及list类型转换函数的使用

  21. 已知a=['a','b'],b=[7,8,9],如果c=a*2+b,那么列表c是?( ) A、['a','b','a','b',7,8,9] B、['a','b',2,7,8,9] C、['a','b',7,8,9,'a','b'] D、['a','b','a','b',7,8,9,7,8,9] 题型:单选题 答案:A 难度:一般 试题解析:本题知识点是列表的连接和重复列表元素,根据题意A选项是正确答案

  22. 已知a=[1,2,3,4,5,6,7],则a[0:-2]的的值是?( ) A、[1,2,3,4,5,6] B、[2,3,4,5,6] C、[1,2,3,4,5] D、[2,3,4,5] 题型:单选题 答案:C 难度:一般 试题解析:本题的知识点是列表的通用操作,访问指定索引范围,按题目的意思是访问第一到倒数第二个元素(但不包含倒数第二个),所以选择c

  23. 以下语句不正确的是?( ) A、dict={1:'a'} B、a={'name':'bob'} C、e={[1]:'篮球'} D、c={'school':'精英小学'} 题型:单选题 答案:C 难度:一般 试题解析:定义字典时,键和值是文本时,需要使用引号。字典键不可以使用列表

  24. 关于 break的作用,以下说法正确的是?( ) A、按照缩进跳出当前层语句块 B、暂停该语句后面的循环内容,跳转到循环开始位置开始下一轮循环 C、跳出当前层for/while循环 D、跳出所有for/while循环 题型:单选题 答案:C 难度:容易 试题解析:

  25. 若s=(1,'a',[1,2]),则len(s)的值为?( ) A、错误 B、2 C、3 D、4 题型:单选题 答案:C 难度:一般 试题解析:理解元组的元素,掌握求元组长度的函数 二、判断题(共10题,每题2分,共20分)

  26. while循环和for-in循环一样,都明确了循环的次数。 题型:判断题 答案:错误 难度:一般 试题解析:while循环时条件循环

  27. 可以使用“+”和“-”来连接与删除字符串。 题型:判断题 答案:错误 难度:一般 试题解析:字符串的运算

  28. 不同类型的元素可以存储在同一个列表中。 题型:判断题 答案:正确 难度:容易 试题解析:

  29. 循环结构中的continue语句的功能是中断当前循环的执行,进入下一轮循环条件是否满足的判断。 题型:判断题 答案:正确 难度:一般 试题解析:循环结构中的break语句的功能是中断当前循环的执行,跳出循环结构;continue语句的功能是中断当前循环的执行,进入下一轮循环条件是否满足的判断。因此,说法正确。

  30. ESC可以用于Python跳出循环。 题型:判断题 答案:错误 难度:一般 试题解析:break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

  31. 按照顺序执行下面的代码,以下命令都是合法的。 list1=[1,2,3] list1[2]=4 tuple1=(1,2,3) tuple1[0]=0 题型:判断题 答案:错误 难度:一般 试题解析:

  32. Python列表、元组、字典都属于有序序列,都可以用索引进行访问。 题型:判断题 答案:错误 难度:容易 试题解析:字典是映射,不是序列

  33. message1='Hello',则message1.append('world')的值为'Hello world'。 题型:判断题 答案:错误 难度:一般 试题解析:

  34. 元组一旦创建,其中的元素就不能再被修改了。 题型:判断题 答案:正确 难度:一般 试题解析:理解Python中的元组的概念的特点

  35. 运行以下程序,结果是一条由9行单个的#组成的图案。 i=0 while i<10:     i=i+1     print('#') 题型:判断题 答案:错误 难度:一般 试题解析:应该是10个# 三、编程题(共2题,共30分)

  36. 日期转换 编写一个程序,实现用户输入一个日期,格式为"月/日/年",如输入'05/21/2021',程序输出日期为'May 21,2021'。 1至12月的英文名称如下: January,February,March,April,May,June,July,August,September,October,November,December。 题型:编程题 答案: 参考程序: #说明:程序仅供参考,考生可以有多种解决方法。 datestr=input('Enter a date(mm/dd/yyyy):')    monthstr,daystr,yearstr=datestr.split('/') months=['January','February','March','April','May','June','July','August','September','October','November','December',''] monthstr=months[int(monthstr)-1] print('The date is:'+monthstr,daystr+',',yearstr) 难度:一般 试题解析: 评分细则: 1)定义一个变量接受输入的日期;(1分) 2)能够把年月日分离出来;(3分) 3)把输入的月份转变为英文名称(原题已给出每个月的英文名称,所以如果程序中的英文名称错误,有一处错误扣0.1分);(4分) 4)输出转换后的结果。(2分)

图形的循环美

设计一个海龟绘图程序,程序效果如下图(要求:海龟从里往外绘制图形,线条初始长度为20,相邻两条边相差4(每一个线条均比前一个线条长4),线条颜色为红色,总共边数至少80条以上(为了便于程序调试,建议不超过120条)。

添加图片注释,不超过 140 字(可选)

题型:编程题

答案:

参考程序:

import turtle

turtle.pencolor("red")

turtle.speed(6)

length=20

jd=90

i=1

while i<=100:

    turtle.forward(length)

    turtle.left(jd)

    length=length+4

    i=i+1

turtle.done()

难度:一般

试题解析:

评分细则:

1)导入海龟模块(2分)

2)设置画笔颜色(2分)

3)设置初始长度20(2分)

4)实现80次以上的循环设计(6分)

5)实现每次线条长度加4(3分)

6)实现程序效果(5分)

青少年软件编程(Python)等级考试试卷(三级)

分数:100.00 题数:38

一、单选题(共25题,每题2分,共50分)

  1. 使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表L=['1','3','5','7','9']转换为列表[1,3,5,7,9]的函数写法为?( ) A、map(int,L) B、list(map(int,L)) C、map(L,int) D、list(map(L,int)) 题型:单选题 答案:B 难度:较难 试题解析:注意两个点,一个是map的参数为类型、序列。另外,map生成的对象不是列表,需要强制转换。

  2. 以下关于len()函数的说法中错误的是?( ) A、len()函数可以用于返回字符串中的字符数 B、len()函数可以用于返回列表中的元素个数 C、len("I love China" )的结果为10 D、len("I love China" )的结果为12 题型:单选题 答案:C 难度:一般 试题解析:len("I love China" )的结果为12,所以C项错误。空格也要统计入内。

  3. 关于Python异常处理的解释,描述正确的是?( ) A、一般情况下,在Python正常处理程序时也会发生一个异常 B、异常处理增加了程序代码长度,降低了可读性 C、在程序中加入异常处理会使程序出现错误 D、当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行 题型:单选题 答案:D 难度:一般 试题解析:当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

  4. Python文件常用的写入方式有w+和a+,它们的相同点是?( ) A、覆盖写 B、追加写 C、若文件不存在就创建 D、每次写的时候会自动覆盖上一次的内容 题型:单选题 答案:C 难度:容易 试题解析:w+模式可读可写,若文件不存在就创建 a+模式可读可写,若文件不存在就创建

  5. Python标准库math中用来计算平方根的函数是?( ) A、sqrt B、max C、min D、print 题型:单选题 答案:A 难度:一般 试题解析:本题主要是一些常用函数的功能考查,要求了解常用函数的功能

  6. 某同学上完体育课回教室发现丢失了重要的物品,于是他找到班主任求助。班主任打开视频监控,然后把视频进度拖到这节课中间时间点,发现水杯已经丢了,于是判定是前半节课丢的。接着又把视频进度拖到前面一半的一半……重复以上过程,很快就锁定了物品丢失的真相。以上描述,体现出了哪一种算法思想?( ) A、二分法 B、选择排序法 C、递归法 D、迭代法 题型:单选题 答案:A 难度:一般 试题解析:

  7. 去掉列表中的部分数据,例如去掉列表[1,2,3,4,5,6,7,8,9]中3的倍数,可以使用哪一函数来实现?( ) A、map B、filter C、zip D、enumerate 题型:单选题 答案:B 难度:一般 试题解析:过滤函数使用filter,map是按一定规则得到一个新序列,zip是组合序列,enumerate是为序列添加索引。

  8. 定义一个列表 num=list(range(3,6)) print(num) 输出的结果是?( ) A、[0,1,2,3] B、[0,1,2,3,4,5,6] C、[3,4,5] D、[3,4,5,6] 题型:单选题 答案:C 难度:一般 试题解析:range(3,6) 对应(3,4,5),转换为列表后,输出结果为[3,4,5]

  9. print(divmod(34,8))运行结果是?( ) A、4 2 B、4 C、2 D、2 4 题型:单选题 答案:A 难度:一般 试题解析:学习divmod函数的用法

  10. 八进制10的十进制值是?( ) A、8 B、10 C、20 D、24 题型:单选题 答案:A 难度:一般 试题解析:八进制10的十进制值是为8,故选A

  11. a=3.1415926 round(a,2) 运行结果是?( ) A、3 B、3.14 C、3.141 D、3.1415926 题型:单选题 答案:B 难度:较难 试题解析:保留2位小数。

  12. Python内置函数( )用来返回序列中的最小元素?( ) A、mini() B、read() C、max() D、min() 题型:单选题 答案:D 难度:容易 试题解析:返回最小值的是min()函数

  13. 下面表达式的运行结果与print(divmod(37,9))运行结果相同的是?( ) A、print(37%9,37//9) B、print((37%9,37//9)) C、print(37//9,37%9) D、print((37//9,37%9)) 题型:单选题 答案:D 难度:一般 试题解析:首先要打印一个元组,print内部应该还有一个括号,另求商使用//,所以为print((37//9,37%9))

  14. 已知输入变量x = 'hello world', 调用函数x.replace('l', 'h')的结果为?( ) A、'hello world' B、'lello world' C、'hello worhd' D、'hehho worhd' 题型:单选题 答案:D 难度:一般 试题解析:学习函数x.replace(),用 l 来替换 h 的用法

  15. 下列十六进制数中,转换为二进制数后含有偶数个“1”的是?( ) A、0xF8 B、0xE0 C、0xA9 D、0x15 题型:单选题 答案:C 难度:较难 试题解析:将十六进制转换二进制,对1的个数进行统计。

  16. 以下表达式是十六进制整数的选项是?( ) A、16 B、0b16 C、0x16 D、'0x16' 题型:单选题 答案:C 难度:一般 试题解析:python中用0x表示16进制,D为字符。故选C

  17. 给已有文件“实验中学学生花名册.txt”增加两名学生,而且不能覆盖原有的内容。 下面代码正确的是?( ) A、filename="实验中学学生花名册.txt"  with open(filename,"w") as f:     f.write("黎明\n")     f.write("方芳\n") B、filename="实验中学学生花名册.txt"  with open(filename,"r") as f:     f.write("黎明\n")     f.write("方芳\n") C、filename="实验中学学生花名册.txt"  with open(filename,"r+") as f:     f.write("黎明\n")     f.write("方芳\n") D、filename="实验中学学生花名册.txt" with open(filename,"a") as f:     f.write("黎明\n")     f.write("方芳\n") 题型:单选题 答案:D 难度:一般 试题解析:

  18. 以下关于二进制整数的定义,正确的是?( ) A、0B1014 B、0b1010 C、0b1019 D、0bC3F 题型:单选题 答案:B 难度:一般 试题解析:二进制整数以Ob或OB开头,后面跟二进制数0和1。A、C、D三项中有4、9、C、3、F,这些都不是二进制数。

  19. 设s="happy time",那么print(s[-2:])的结果是?( ) A、me B、happy C、time D、ha 题型:单选题 答案:A 难度:容易 试题解析:本试题主要考查print函数的用法

  20. filename = "中国诗人.txt"  with open(filename,"w") as file:      file.write("唐 李白\n")     file.write("唐 白居易\n")  以上程序执行程序后,"中国诗人.txt"文件内容为?( ) A、唐 李白 唐 白居易 B、唐 李白  唐 白居易 C、唐 李白\n 唐 白居易 D、唐 李白\n 唐 白居易\n 题型:单选题 答案:B 难度:一般 试题解析:

  21. ord()函数可以将一个字符转化成ascii码值,而chr函数则是相反的过程。 已知'a'的ascii码值为97,'A'的ascii码值为65, 则Python完成小写转大写的核心代码为?( ) a=input("请输入一个小写字母:\n") b=________________ print("转化结果为:"+b) A、chr(ord(a)-31) B、ord(chr(a)-32) C、chr(ord(a)+32) D、chr(ord(a)-32) 题型:单选题 答案:D 难度:一般 试题解析:这个题目从函数角度其实考查的是chr函数的使用,既然最终是个字符,显示到字符串中,肯定是使用chr。 至于加减,题中给出的码值差,已经很明显。故选D。

  22. 关于文件的读写,下列解释表述错误的是?( ) A、读取模式('r') B、写入模式('w') C、读写模式('w') D、附加模式('a') 题型:单选题 答案:C 难度:一般 试题解析:

  23. 小明编写了一个插入排序的算法,为列表arr = [5, 33, 21, 67, 39, 73, 7, 43 ]中的数值进行排序,他在调试时,如下图所示有意修改了循环的次数,请问,现在代码运行后print(arr)打印出的结果是?( )

添加图片注释,不超过 140 字(可选)

A、[5, 33, 21, 67, 39, 73, 7, 43] B、[5, 21, 33, 67, 39, 43, 7, 73] C、[5, 21, 33, 39, 67, 7, 73, 43] D、[5, 21, 33, 67, 39, 73, 7, 43] 题型:单选题 答案:D 难度:一般 试题解析:本题考查学生对“插入排序”算法的理解,只循环了3次,所以正确答案是选项D

  1. 异常处理的作用是不想让程序终止,如果出错了需要特殊处理。下列实现异常处理的语句是?( ) A、if /else B、try/except C、Warning D、Error 题型:单选题 答案:B 难度:容易 试题解析:python中,try/except语句可以实现异常处理

  2. 小明想对列表arr = [5, 33, 21, 67, 39, 73, 7, 43 ]中的数值进行排序,于是编写了“冒泡排序”代码,如下图。 请问,下图红线处,应该填入哪段代码?( )

添加图片注释,不超过 140 字(可选)

A、

添加图片注释,不超过 140 字(可选)

B、

添加图片注释,不超过 140 字(可选)

C、

添加图片注释,不超过 140 字(可选)

D、

添加图片注释,不超过 140 字(可选)

题型:单选题 答案:D 难度:一般 试题解析:本题考查学生对冒泡排序算法的理解,正确答案为选项D 二、判断题(共10题,每题2分,共20分)

  1. readline()执行结果为字符串,readlines()执行结果为列表。 题型:判断题 答案:正确 难度:一般 试题解析:

  2. 猜一个20以内的随机数二分法比顺序查找的效率更高。 题型:判断题 答案:正确 难度:一般 试题解析:本题主要考查二分法的用法

  3. Python中避免使用反斜线'\'指定文件路径时出错,如\t;常常使用斜线'/'或者双反斜线'\\'。 题型:判断题 答案:正确 难度:一般 试题解析:

  4. bool函数判断整数参数的布尔值时,只要是非0参数,结果就为True。 题型:判断题 答案:正确 难度:容易 试题解析:

  5. 二进制数转换为十六进制的方法是:从右到左将4位分成一段,左边不满4位的可以用0补满,分别转换为十六进制。 题型:判断题 答案:正确 难度:一般 试题解析:四位二进制表示一位十六进制

  6. Python中的dir函数是一个文件夹操作函数,其主要作用是创建一个文件夹。 题型:判断题 答案:错误 难度:较难 试题解析:dir是查看对象的方法。

  7. 二进制数与十六进制数的末位是“1”,各转换为十进制数后都是奇数。 题型:判断题 答案:正确 难度:一般 试题解析:二进制、八进制、十六进制末位数决定该数奇偶

  8. 在try-finally异常处理结构中,无论是否发生异常,都会处理最后的代码。 题型:判断题 答案:正确 难度:一般 试题解析:try-finally 语句无论是否发生异常都将执行最后的代码。

  9. song.csv文件中第一列是歌曲名,使用以下Python程序可以把歌曲名单一一读取出来。 import csv with open('song.csv', 'r') as f:      reader = csv.reader(f)      for i in reader:          print(i[0]) 题型:判断题 答案:正确 难度:较难 试题解析:通过文件的方式读取数据,再依次将读取的数据输出,注意输出只需要歌曲名单,即第一列i[0]

  10. 执行代码 x, y, z = sorted([1, 3, 2]) 之后,变量y的值为 1 。 题型:判断题 答案:错误 难度:一般 试题解析:本题的主要考核sorted函数的用法 三、编程题(共3题,共30分)

  11. 输入10个数据进行升序排序,并在这有序数据上插入一个数据,使之仍然有序。 程序代码如下,请补全。 lis=[] for i in range(10):     x=int(input('输入待排序数据%d:'%(i)))     lis.append(x)  for i in range(    ①    ):     for j in range(i,len(lis)):         if     ②    :             lis[i],lis[j]=lis[j],lis[i] print(lis) n=int(input('输入一个需要插入的数据:')) lis.append(n) for i in range(    ③    ):     if     ④    :         for j in range(i,len(lis)):             lis[j],lis[-1]=    ⑤             break print(lis) 题型:编程题 答案: 参考答案: ①   len(lis)-1 (或 len(lis))    (3分) ②   lis[i]>lis[j]       (4分) ③   len(lis)-1         (3分) ④   lis[i]>=n         (2分) ⑤   lis[-1],lis[j]      (4分) 难度:一般 试题解析:lis=[] for i in range(10):     x=int(input('输入待排序数据%d:'%(i)))     lis.append(x)  for i in range(len(lis)-1):     for j in range(i,len(lis)):         if lis[i]>lis[j]:             lis[i],lis[j]=lis[j],lis[i] print(lis) n=int(input('输入一个需要插入的数据:')) lis.append(n) for i in range(len(lis)-1):     if lis[i]>=n:         for j in range(i,len(lis)):             lis[j],lis[-1]=lis[-1],lis[j]         break print(lis)

  12. 小文的运动时间数据存储在文件“sport.csv”中,数据内容如下图显示:

添加图片注释,不超过 140 字(可选)

下列代码实现了读取数据,求和并统计个数,输出平均时长,并保留2位小数,请你补全代码。 import csv with open("/data/①") as f:     rows = list(csv.reader(f))     s=0     c=0     for row in rows[1:]:         s+=int(②)         c=c+1 print(round(③,2)) 题型:编程题 答案: 参考答案: ① sport.csv(1分)  ② row[0](2分)  ③ s/c(1分) 难度:一般 试题解析:import csv with open("sport.csv") as f:     rows = list(csv.reader(f))     s=0     c=0     for row in rows[1:]:         s+=int(row[0])         c=c+1 print(round(s/c,2))

  1. 给定一个整数 num,从 1 到 num 按照下面的规则返回每个数:

如果这个数被 3 整除,返回 'Apple'。

如果这个数被 5 整除,返回 'Pie'。

如果这个数能同时被 3 和 5 整除,返回 'ApplePie'。

如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。

n=int(input("请输入一个数字:"))

results=[]

for i in range(1,①):

    if ②:

        results.append("ApplePie")

    elif i%3==0:

        results.append("Apple")

    elif i%5==0:

        results.append("Pie")

    else:

        results.append(③)

print(results)

题型:编程题

答案:

参考答案:

① n+1(3分) 

② i%3==0 and i%5==0(4分) 

③ str(i)(3分)

难度:一般

试题解析:n=int(input("请输入一个数字:"))

results=[]

for i in range(1,n+1):

    if i%3==0 and i%5==0:

        results.append("ApplePie")

    elif i%3==0:

        results.append("Apple")

    elif i%5==0:

        results.append("Pie")

    else:

        results.append(str(i))

print(results)

青少年软件编程(Python)等级考试试卷(四级)

分数:100.00 题数:38

一、单选题(共25题,每题2分,共50分)

  1. 对于数列3,8,11,15,17,19,25,30,44,采用“二分查找”法查找8,需要查找多少次?( ) A、5 B、4 C、3 D、2 题型:单选题 答案:D 难度:容易 试题解析:按二分查找法的规律,每次先查找中间值,进行比较。

  2. 下面哪一项不是pip指令?( ) A、pip install Scipy B、pip uninstall Jieba C、pip clear D、pip list 题型:单选题 答案:C 难度:容易 试题解析:pip工具中没有clear方法。

  3. 有如下Python语句,执行该语句后,结果是?( ) f=lambda x:5 print(f(3)) A、3 B、没有输出 C、5 D、None 题型:单选题 答案:C 难度:一般 试题解析:将参数3传递给匿名函数f,返回值为5,故选C

  4. 执行如下Python代码后,结果是?( ) def inverse(s,n=0):     while s:         n = n * 10 + s % 10         s = s // 10     return n print(inverse(456,123)) A、654123 B、123456 C、123654 D、654321 题型:单选题 答案:C 难度:一般 试题解析:调用函数inverse(456,123),将456逐位取出,并累加到123的后面,故选C

  5. 下列有关循环和递归的描述正确的是?( ) A、递归思想代码清晰简洁,可读性强 B、递归代码中不能有循环结构的语句 C、递归是从问题的起点出发,逐渐将复杂问题化为简单问题,最终求得问题 D、能用递归实现的,一定能用循环代码实现 题型:单选题 答案:A 难度:一般 试题解析:递归是从问题的目标出发,逐渐将复杂问题化为简单问题,最终求得问题

  6. 以下有关Python函数的定义表述中错误的是?( ) A、函数的定义必须在主程序调用语句之前出现 B、在形参列表中必须先列出有默认值的形参,再列出没有默认值的形参 C、实参是实际占用内存地址的,而形参不占用 D、def关键字后面加函数名定义函数,定义必须以冒号结尾 题型:单选题 答案:B 难度:一般 试题解析:在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。

  7. 如下代码运行后下面选项中描述错误的是?( ) def pph(a,b):   c=a**2+b   b=a   return c a=10 b=100 c=pph(a,b)+a print(a,' ',b,' ',c) A、执行该函数后,变量a的值为10 B、执行该函数后,变量b的值为100 C、执行该函数后,变量c的值为200 D、该函数名称为pph 题型:单选题 答案:C 难度:一般 试题解析:函数基本概念

  8. 阅读下列程序段,数列的第6项值为多少?( ) def fibona(x):     if x==1 or x==2:         f=1     for i in range(3,x+1):         f=fibona(x-1)+fibona(x-2)     return f n=int(input("请输入数列第几项:")) m=fibona(n) print("数列的第"+str(n)+"项的值为"+str(m)) A、1 B、8 C、21 D、34 题型:单选题 答案:B 难度:容易 试题解析:程序段中的数列其实是斐波那契数列,这个数列从第3项开始,每一项都等于前两项之和。1, 1, 2, 3, 5, 8, 13, 21, 34, 55…

  9. 有如下Python的自定义函数,执行该程序后,结果是?( ) def calc(x,y,op):     return eval(str(x)+op+str(y))  print(calc(3,5,'+')) A、8 B、35 C、None D、-2 题型:单选题 答案:A 难度:一般 试题解析:该函数功能是将参数x,y用op的运算符运算,故选A

  10. 有如下Python程序,执行该程序后,结果是?( ) x = 3 def  calc():     x = 5 print(calc()) A、3 B、5 C、无输出 D、None 题型:单选题 答案:D 难度:一般 试题解析:自定义函数没有return语句,返回值为None,故选D

  11. 应用分治算法的前提是?( ) A、问题的可分性和解的可归并性 B、问题的复杂性和解的简单性 C、问题的可分性和解的存在性 D、问题的复杂性和解的可归并性 题型:单选题 答案:A 难度:一般 试题解析:A。问题的可分性和解的可归并性是应用分治算法的前提。

  12. 有一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地前,反弹多高?用递归函数解决,下面选项正确的是?( ) A、def height(n):      if n == 1:          return 100      else:          return n*2 print(height(10)) B、def height(n):      if n == 1:          return 100      else:          return height(n-1)/2 print(height(10)) C、def height(n):      if n == 1:          return 100      else:          return height(n+1)/2 print(height(10)) D、def height(n):      if n == 1:          return 100      else:          return height(n-1)*2 print(height(10)) 题型:单选题 答案:B 难度:一般 试题解析:每次弹起的高度都是上次的一半,因此递归式子为height(n-1)/2

  13. 有如下Python程序,执行该程序后,结果是?( ) g = lambda x,y=3,z=5:x+y+z print(g(2)) A、2 B、5 C、7 D、10 题型:单选题 答案:D 难度:一般 试题解析:匿名函数g的功能是将3个参数x,y,z之和,故选D

  14. 下面的程序输出1~100之间能被7整除但不能同时被5整除的所有整数。 k=1 while k<101:    if k%7==0 and k%5 !=0:        print(k)    k += 1 根据下面哪个选项的方法优化后,程序的运行效率最高?( ) A、将k=1改为k=7 B、将k C、将k += 1改为k += 7 D、将k=1改为k=7,同时将k += 1改为k += 7 题型:单选题 答案:D 难度:一般 试题解析:选项A可以少执行6次,选项B可以少执行2次,选项D可以少执行86次。选项C程序不能实现设计的功能。

  15. 下列程序段的运行结果为?( ) def f(n):     if n<=1:          return 1     else:         return f(n-1)*3 print(f(5)) A、9 B、27 C、81 D、243 题型:单选题 答案:C 难度:容易 试题解析:f(5)=f(4)*3=f(3)*3*3=f(2)*3*3*3=f(1)*3*3*3*3=1*81=81

  16. 下列选项中,关于如何安装第三方库的说法正确的是?( ) A、如果电脑没有联网,仍然可以使用pip工具安装本地的whl文件 B、必须使用命令行工具安装第三方库 C、第三方库只要可以用pip完整的下载下来,就可以成功安装 D、安装上Anaconda就安装了所有的第三方库 题型:单选题 答案:A 难度:一般 试题解析:可执行文件不需要使用命令行工具就可以安装。没有编译的第三方库,即使能够下载,也无法安装。Anaconda里面包含了800多个第三方库,但是不是全部的第三方库。

  17. 运行以下程序输出的结果是?( ) y=2 def fun():       global y       y=1       print(y) fun() print(y) A、 2 1 B、 2 2 C、 1 2 D、 1 1 题型:单选题 答案:D 难度:较难 试题解析:Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global以改变它的值。

  18. 下面哪种算法使用了分治的方法?( ) A、插入排序 B、快速排序 C、选择排序 D、冒泡排序 题型:单选题 答案:B 难度:一般 试题解析:只有B使用了分治的方法。

  19. 下面关于递归函数说法正确的是?( ) A、一般来说,递归函数的执行效率高于非递归函数 B、边界条件和递归关系是递归函数编写的关键 C、递归函数的嵌套调用次数没有限制 D、递归函数不可以改写为非递归函数 题型:单选题 答案:B 难度:一般 试题解析:一般来说,递归函数代码简洁,易于理解,但执行效率较低。递归函数的调用次数必须有限制。

  20. 观察此题示例代码,以下表述中错误的是?( ) nums = range(2,20) for i in nums:     nums=list( filter(lambda x:x==i or x % i,nums)) print(nums) A、filter()函数输出后是一个数组而不是列表 B、示例代码中的关键字lambda表示匿名函数 C、lambda x:x==i or x % i,nums中冒号:之前的x是这个函数的参数 D、匿名函数需要return来返回值,表达式本身结果就是返回值 题型:单选题 答案:D 难度:一般 试题解析:关键字lambda表示匿名函数,冒号之前的表示它们是这个函数的参数,匿名函数不需要return来返回值,表达式本身结果就是返回值。在定义匿名函数时,需要将它直接赋值给一个变量,然后再像一般函数调用。

  21. 在一个平面中,有n个圆两两相交,但任二个圆不相切,任三个圆无公共点,以下函数能计算出n个圆把平面分成的区域个数,空格处填写的语句是?( )

添加图片注释,不超过 140 字(可选)

  def c(n):     if n=1:          return 2     else:          return                     A、c(n-1)+2*(n-1) B、c(n-1)+ c(n-2) C、c(n-1)+2*n D、c(n-1)+2*(n+1) 题型:单选题 答案:A 难度:较难 试题解析: 设这n个圆将平面分成an个区域。易知,a1=2,a2=4。现在假设前n-1个圆将平面分成了an-1个区域,当加入第n个圆(虚线圆)时,由题设这个圆与前面的n-1个圆一定交于2(n-1)个点,这2(n-1)个点把第n个圆分成2(n-1)条弧,而每条弧正好将前面的n-1个圆分成的区域中的其经过的每个区域分成2个区域,故新加入的第n个圆使所成的区域数增加了2(n-1) 。因此可以建立如下带初值的递推关系: an=an-1+2(n-1) a1=2

  1. 有如下Python程序段,执行该程序后,结果是?( ) def fun(*p):     return sum(p) print(fun(1,3,5)) A、4 B、6 C、8 D、9 题型:单选题 答案:D 难度:一般 试题解析:该函数功能是将参数1,3,5求和,故选D

  2. 以下关于全局变量和局部变量的表述正确的是?( ) A、如果在函数中定义的局部变量与全局变量同名,则全局变量屏蔽局部变量 B、可以通过global关键字,通过全局变量修改局部变量 C、nonlocal关键字用来在函数或局部作用域使用内层(非全局)变量 D、全局变量的作用域一定比局部变量的作用域大 题型:单选题 答案:D 难度:一般 试题解析:如果在函数中定义的局部变量与全局变量同名,则局部变量屏蔽全局变量。可以通过global关键字,通过局部变量修改全局变量。nonlocal关键字用来在函数或局部作用域使用外层(非全局)变量。局部变量的作用域是指程序内部,全局变量的作用域是整个程序。

  3. 关于以下程序,下列表述中错误的一项是?( ) c=1 def fun(n):     a=1     for b in range(1,n):         a*=b     return a n=int(input('Enter n=')) print(fun(n),c) A、c是全局变量,a是局部变量 B、n是形式参数,当n=5时,程序输出120 1 C、程序实现求阶乘 D、range()函数是python内置函数 题型:单选题 答案:B 难度:一般 试题解析:fun(n)函数的功能是求阶乘,range(1,n)是从1循环到n-1。

  4. 以下程序的运行结果是?( ) def f(x,y,z):     print(x,y,z) f(z=3,x=2,y=1) A、3 2 1 B、1 2 3 C、2 1 3 D、3 1 2 题型:单选题 答案:C 难度:一般 试题解析:关键字实参 二、判断题(共10题,每题2分,共20分)

  5. 所有的Python第三方库均可以使用pip工具进行安装。 题型:判断题 答案:错误 难度:一般 试题解析:错误。使用pip有一些限制,如在线、可安装包等。

  6. 算法的时间复杂度与空间复杂度没有必然关系。 题型:判断题 答案:正确 难度:较难 试题解析:

  7. 在创建自定义函数时,即使函数没有参数,也必须保留一对空的"()"。 题型:判断题 答案:正确 难度:一般 试题解析:

  8. 执行以下代码: def fun( mylist ):     mylist.append([1,2,3,4])     print("函数内取值: ", mylist)     return mylist = [5,6,7] fun( mylist ) print("函数外取值: ", mylist) 程序输出的结果为:函数内取值:  [5, 6, 7, [1, 2, 3, 4]]             函数外取值:  [5, 6, 7, [1, 2, 3, 4]]。 题型:判断题 答案:正确 难度:一般 试题解析:实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,输出是一样的。

  9. 定义Python函数时,如果函数中没有return语句,则该函数返回值是None。 题型:判断题 答案:正确 难度:一般 试题解析:定义Python函数时,如果函数中没有return语句,则该函数返回值None

  10. 执行以下代码: sum=0 def fun(arg1,arg2):     sum=arg1+arg2     print(sum)     return sum fun(5,10) print(sum) 程序输出的结果为:15             15 题型:判断题 答案:错误 难度:一般 试题解析:第1个print(sum)是函数内的局部变量,输出15。第2个print(sum)是函数外的全局变量,输出0。

  11. 对于一个复杂问题,如果所分解出的各个子问题之间相互不独立,则不适合使用分治算法。 题型:判断题 答案:正确 难度:一般 试题解析:正确。分治算法要求子问题是相互独立的

  12. 执行以下代码: def fun( name, age = 30 ):    print("Name:", name)    print("Age:", age)    return fun( age=40, name="summy" ) fun( name="summy" ) 程序输出的结果为: Name: summy Age: 40 Name: summy Age: 40。 题型:判断题 答案:错误 难度:一般 试题解析:调用函数时,默认参数的值如果没有传入,则被认为是默认值。第二次调用fun()时age的值没有传入,则默认是30。

  13. 下列程序段运行后的结果是2。 def change(a,b):     a,b=b,a     return a a=2 b=3 print(change(change(a,b),a)) 题型:判断题 答案:正确 难度:容易 试题解析:自定义函数change(a,b)的作用是交换变量a,b的值并返回变量a的值,change(2,3)返回的值为3,change(3,2)返回的值为2。

  14. 对于斐波那契数列:1,1,2,3,5,……,我们只能采用迭代公式以递推的方式求解。 题型:判断题 答案:错误 难度:一般 试题解析:斐波那契数列可以用多种方式求解。 三、编程题(共3题,共30分)

在编写抽奖程序时,为了保证一个人只有一次中奖机会,要检查新抽出来的数字是不是已经被抽中过了。

一种办法是将已经中过奖的人员编号存放在test_list里面,然后每抽出一个新的人员编号,判断它是否在中奖人员列表中。

如果没有在中奖人员列表中,说明中奖号码有效,并将它保存进中奖人员列表;如果已经在里面了,就再生成一个新的人员编号。

请你补全下面的代码,实现判断一个数字是否在列表中的功能。

#子问题算法(子问题规模为1)

def is_in_list(init_list,num):

   if init_list[0] == num:

       return True

   else:

       return False

#分治法

def find_out(init_list,num):

   n = len(init_list)

   if ____①______          #如果问题的规模等于1,直接解决

       return is_in_list(init_list,num)

   #分解(子问题规模为n/2)

   left_list,right_list = _________②____________

   #递归,分治,合并

   res=find_out(left_list,num) __③__ find_out(right_list,num)

   return res

if __name__ == "__main__":

   #测试数据

   test_list = [18,43,21,3,28,2,46,25,32,40,14,36]

   #查找

   print(_____④_____) 

程序运行结果:

>>>True

    

题型:编程题

答案:

参考答案:

  1.  n==1:   或其他正确答案; (2分)

  2.  init_list[:n//2],init_list[n//2:]    或其他正确答案; (2分)

  3.  or    或其他正确答案; (2分)

  4. find_out(test_list,25)    或其他正确答案。 (2分)

难度:较难

试题解析:

参考程序:

#子问题算法(子问题规模为1)

def is_in_list(init_list,num):

   if init_list[0] == num:

       return True

   else:

       return False

#分治法

def find_out(init_list,num):

   n = len(init_list)

   if n == 1:          #如果问题的规模等于1,直接解决

       return is_in_list(init_list,num)

   #分解(子问题规模为n/2)

   left_list,right_list = init_list[:n//2],init_list[n//2:]

   #递归(树),分治,合并

   res=find_out(left_list,num) or find_out(right_list,num)

   return res

if __name__ == "__main__":

   #测试数据

   test_list = [18,43,21,3,28,2,46,25,32,40,14,36]

   #查找

   print(find_out(test_list,25)) #True

   

   

37.

乘法运算等于多个加法运算的和。比如,3×2可以理解为3+3,也可以理解为2+2+2 。

下面的程序使用递归算法演示了计算两个自然数的乘积的过程。请你补全代码。

输入:分两次输入自然数num1,num2

输出:num1 × num2 = 乘积 def cheng_fa(num1,num2,value):

    if          ①             

        value += 0

    else:

        value += num1

                 ②         

        value = cheng_fa(num1,num2,value)

    return      ③        

num1=int(input('输入第1个数:'))

num2=int(input('输入第2个数:'))

value=0

value = cheng_fa(num1,num2,value)

print('{} X {} = {}'.format(num1,num2,value))

程序运行结果:

输入第1个数:3

输入第2个数:7

3 X 7 = 21

题型:编程题

答案:

参考答案:

(1)num1==0 or num2==0:  或其他等效答案 ;(3分)

(2)num2 -= 1 或 num2=num2 - 1 或其他等效答案; (4分)

(3)value 。(3分)

难度:一般

试题解析:

参考答案:

(1)num1==0 or num2==0:  或其他等效答案 (3分)

(2)num2 -= 1 或 num2=num2 - 1 或其他等效答案 (4分)

(3)value (3分)

参考程序:

def cheng_fa(num1,num2,value):     if num1==0 or num2==0:

        value += 0

    else:

        value += num1

        num2 -= 1

        value = cheng_fa(num1,num2,value)

    return value

num1=int(input('输入第1个数:'))

num2=int(input('输入第2个数:'))

value=0

value = cheng_fa(num1,num2,value)

print('{} X {} = {}'.format(num1,num2,value))

程序运行结果:

输入第1个数:3

输入第2个数:7

3 X 7 = 21

38.

外卖送餐服务越来越受到人们的喜爱,外卖小哥们也成了路上的一道风景。

当顾客使用外卖软件点餐时,会出现一个预计送达时间,包括了餐厅制作食物的时间,路上的骑行时间等等。

一种常用的计算路上骑行时间的方法是用曼哈顿距离(manhatton distance)除以平均骑行速度。平面上点A(x1,y1)与点B(x2,y2)的曼哈顿距离为:|x1-x2|+|y1-y2|。

假设一名外卖小哥的平均骑行速度为30km/h。下面的程序模拟计算外卖小哥的路上骑行时间,请你补充完整。

输入:分两次输入A点和B点的坐标值

输出:A、B两点间的曼哈顿距离和路上骑行时间。

#求绝对值

def my_abs(n):

  if       ①       

      return n

  else:

      return      ②     

#主程序

v=30 #平均骑行速度

x1=float(input('输入A点的x坐标(米):'))

y1=float(input('输入A点的y坐标(米):'))

x2=float(input('输入B点的x坐标(米):'))

y2=float(input('输入B点的y坐标(米):'))

#计算曼哈顿距离mht

mht =            ③                   

#计算路上骑行时间

time_on_the_road    =            ④                   

print('A、B两点的曼哈顿距离为{}米'.format(mht))

print('预计路上骑行时间需要{}分钟'.format(time_on_the_road))

程序运行结果:

输入A点的坐标(米),以逗号分隔:-1000,1000

输入B点的坐标(米),以逗号分隔:1000,-1000

A、B两点的曼哈顿距离为4000米

预计路上骑行时间需要8.0分钟

题型:编程题

答案:

参考答案:

  1.  n>0: 或 n>=0:   (2分)

  2.  -n  (2分)

  3. my_abs(x1-x2)+my_abs(y1-y2) 或 sum([my_abs(x1-x2),my_abs(y1-y2)]) 或 sum((my_abs(x1-x2),my_abs(y1-y2))) 或其他等效答案;  (4分)

  4. mht/1000/v*60 或 mht/(1000*v)*60 或 mht*60/1000/v 或 (mht*60)/(1000*v)或其他等效答案  。(4分)

难度:一般

试题解析:

参考程序:

#求绝对值

def my_abs(n):

  if n>0:

      return n

  else:

      return -n

#主程序

v=30    #平均骑行速度

x1,y1=eval(input('输入A点的坐标(米),以逗号分隔:'))

x2,y2=eval(input('输入B点的坐标(米),以逗号分隔:'))

#计算曼哈顿距离mht

mht = my_abs(x1-x2)+my_abs(y1-y2)               #方法1

mht = my_abs(y1-y2)+my_abs(x1-x2)               #方法2

mht = sum([my_abs(x1-x2),my_abs(y1-y2)])        #方法3

mht = sum((my_abs(x1-x2),my_abs(y1-y2)))        #方法4

#计算路上骑行时间

time_on_the_road = mht/1000/v*60        #方法1

time_on_the_road = mht/(1000*v)*60      #方法2

time_on_the_road = mht*60/1000/v        #方法3

time_on_the_road = (mht*60)/(1000*v)    #方法4

print('A、B两点的曼哈顿距离为{}米'.format(mht))

print('预计路上骑行时间需要{}分钟'.format(time_on_the_road))

青少年软件编程(Python)等级考试试卷(五级)

分数:100.00 题数:38

一、单选题(共25题,每题2分,共50分)

  1. 执行下列代码,正确的答案是?( ) >>> l=[10,0,1,6,12,8] >>> l.sort(key=str) >>> l A、[0,1,6,8,10,12] B、[0,1,10,12,6,8] C、[0,1,10,6,8,12] D、[12,10,8,6,1,0] 题型:单选题 答案:B 难度:一般 试题解析:

  2. 下列说法,正确的是?( ) A、集合类型是一个元素集合,元素之间有序 B、集合类型是一个元素集合,元素不能重复 C、集合类型是一个元素集合,元素可以重复 D、集合类型是一个元素集合,元素之间无序,元素类型必修相同 题型:单选题 答案:B 难度:容易 试题解析:

  3. 对于r=range(5),下列合法的方法是?( ) A、r[2]=8 B、del r[2] C、r.pop() D、r.count(2) 题型:单选题 答案:D 难度:容易 试题解析:

  4. 下列代码的运行结果是?( ) def jishu(n):     return n % 2 == 1 newlist = filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) n=list(newlist) print(n) A、[2,4,6,8,10] B、[1, 3, 5, 7, 9] C、[1,2,3,4,5,6,7,8,9,10] D、[10,9,8,7,6,5,4,3,2,1] 题型:单选题 答案:B 难度:一般 试题解析:过滤函数使用filter。

  5. 下列语句的输出结果是?( ) for  i  in “xyz”: for j in range(3):     print(i,end=’ ’) if  i==”z”: break A、xxxyzzz B、xxxyyyz C、xxxyyyzzz D、xyyyzzz 题型:单选题 答案:B 难度:一般 试题解析:

  6. 下列操作,正确的为哪一项?( ) A、 >>>tuple(‘ni hao’) >>>(‘ni’,’hao’) B、 >>>tuple(range(3)) >>>(0,1,2) C、 >>>tuple(str,range(3)) >>>(0,1,2) D、 >>>tuple(map(str,range(3))) >>>(0,1,2) 题型:单选题 答案:B 难度:一般 试题解析:

  7. 下列有关列表的描述,错误的是?( ) A、列表是包含若干元素的随机内存空间 B、列表是包含若干元素的有序内存空间 C、列表是包含若干元素的连续内存空间 D、列表的相邻元素之间使用逗号分隔 题型:单选题 答案:A 难度:一般 试题解析:列表是包含若干元素的有序连续内存空间,故选A

  8. 运行下列代码的结果是?( ) import  math math.ceil(-3.3) A、-4 B、-3 C、-4.0 D、-3.0 题型:单选题 答案:B 难度:容易 试题解析:

  9. 下列元组的声明,非法的是哪一项?( ) A、t=1,2,3 B、t=(1,2,3) C、t=(1,) D、t=(1) 题型:单选题 答案:D 难度:容易 试题解析:

  10. 运行下列代码,正确的结果是?( )  >>>print("{:.2f}".format(3.1415926)) A、’3.1’ B、3.1 C、’3.14’ D、3.14 题型:单选题 答案:D 难度:容易 试题解析:

  11. 使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表l=['2','4','6','8']转换为列表[2,4,6,8]的函数写法为?( ) A、map(int,l) B、list(map(int,l)) C、map(l,int) D、list(map(l,int)) 题型:单选题 答案:B 难度:较难 试题解析:

  12. 运行下列代码,正确的结果是?( ) >>>x = set('runoob') >>> y = set('google') >>> x & y  A、{‘o’,’o’} B、{'r', 'b', 'u', 'n'} C、{'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'} D、{'o'} 题型:单选题 答案:D 难度:一般 试题解析:

  13. 下列语句的输出结果是?( ) l=list(range(1,3)) print(l) A、[0,1,2] B、{0,1,2} C、[1,2] D、.{1,2} 题型:单选题 答案:C 难度:一般 试题解析:

  14. 赋值语句path='c:\abc\xyz\tag.txt',执行结果是?( ) A、path的值是'c:\abc\xyz\tag.txt' B、path的值是'c:\bc\yz\ag.txt' C、path的值是'c:\\abc\\xyz\\tag.txt' D、提示出错 题型:单选题 答案:D 难度:容易 试题解析:

  15. 方法pop()与remove()的区别与相同点,错误的是?( ) A、都是删除与参数表中参数相同的元素 B、pop()有返回值 C、remove()没有返回值 D、pop()如果不带参数,则表示默认参数值为-1 题型:单选题 答案:A 难度:一般 试题解析:pop()删除的是参数作为索引所指向的元素。

  16. 有关jieba库的描述,错误的是?( ) A、jieba库的分词原理是利用英文词库,将待处理的内容与词库比对后找到最大概率的词组 B、jieba.lcut(s)返回的是一个列表类型 C、jieba.cut(s)返回的可能是一个元组类型 D、jieba.add_word(w)向分词词典中增加新词w 题型:单选题 答案:A 难度:一般 试题解析:

  17. 要生成如下效果的图片,可以使用以下哪个python库?( )

添加图片注释,不超过 140 字(可选)

A、jieba B、math C、matplotlib D、wordcloud 题型:单选题 答案:D 难度:一般 试题解析:

  1. 以下列表对象的表达,非法的或者值为False的选项是?( ) A、[] B、[None,0,’’] C、[1,2,3] D、[8,]!=[8] 题型:单选题 答案:D 难度:较难 试题解析:[8,]!=[8]的值为False。故选D

  2. 下列语句的输出结果是?( ) for  i  in range(6): if i%2==0:     continue else:     print(i,end=’,’) A、1,3,5, B、1,3,5 C、0,2,4, D、0,2,4 题型:单选题 答案:A 难度:一般 试题解析:

  3. 随机产生1-5之间的一个整数的代码是?( ) A、 >>>import random >>>random.randrange(1,6) B、 >>>import random >>>random.randrange(1:6) C、 >>>import random >>>random.randchoice(1,5) D、 >>>import random >>>random.randint(1,5) 题型:单选题 答案:D 难度:容易 试题解析:

  4. print(‘\x61’)的结果是?( ) A、\x61 B、‘\x61’ C、a D、A 题型:单选题 答案:C 难度:一般 试题解析:\x**表示2位十六进制数对应的字符

  5. 下列声明字典的语句,错误的是?( ) A、d={} B、d={'name':'Tom','age':20,"salary":3900} C、d=dict(title='Python',author='Tom',price=59) D、d=list[('name','Jerry'),('age',20)] 题型:单选题 答案:D 难度:一般 试题解析:

  6. 求执行下列操作后的正确结果?( ) >>> url='www.lxsz.com' >>> url.split() A、('www.lxsz.com') B、['www’,’lxsz’,’com'] C、['www.lxsz.com'] D、('www’,’lxsz’,’com') 题型:单选题 答案:C 难度:一般 试题解析:

  7. m=[x*x for x in range(5) ]的结果的是?( ) A、25 B、16 C、[0, 1, 4, 9, 16] D、(0, 1, 4, 9, 16) 题型:单选题 答案:C 难度:一般 试题解析:

  8. 若d是一个字典,则max(d)是指求?( ) A、字典中键的最大值 B、字典中值的最大值 C、字典中键值对的最大值 D、字典中数字值的最大值 题型:单选题 答案:A 难度:容易 试题解析:注意两个点,一个是map的参数为类型、序列。另外,map生成的对象不是列表,需要强制转换。 二、判断题(共10题,每题2分,共20分)

  9. 对于列表l=[0,1,2,3,4],all(l)的值是True,any(l)的值是False。 题型:判断题 答案:错误 难度:一般 试题解析:all(l)测试是否所有元素都等价于True。any(l)测试是否存在等价于True的元素。

  10. set()函数可以用于生成集合,输入的参数可以是任意组合数据类型,返回结果是一个无重复且排序任意的集合。 题型:判断题 答案:正确 难度:一般 试题解析:集合的概念

  11. 下列两个语句的功能不可能等价: >>> l=[x*x for x in range(6)] >>> l=list(map(lambda x:x*x,range(6)))。 题型:判断题 答案:错误 难度:较难 试题解析:

  12. 字典中的“键”不允许重复,“值”也不允许重复。in运算符的速度比列表、元组快得多。 题型:判断题 答案:错误 难度:一般 试题解析:“值”允许重复。

  13. >>>list(zip(range(3),"abcd")) 返回[(0, 'a'), (1, 'b'), (2, 'c'),(3,’d’)]。 题型:判断题 答案:错误 难度:一般 试题解析:正确的答案是[(0, 'a'), (1, 'b'), (2, 'c')]

  14. >>> list(enumerate(range(3))) 返回值为[(0, 0), (1, 1), (2, 2)]。 题型:判断题 答案:正确 难度:一般 试题解析:

  15. 列表、元组、字符串均可以用set()转换为集合,例如:>>>set((1,2,2,3,4)),结果是{1,2,2,3,4}。 题型:判断题 答案:错误 难度:容易 试题解析:集合中元素无重复

  16. >>>m=’\n\nnihao\t\tliping\n\n\nzhang san’ >>> m.split() 结果是:['nihao', 'liping', 'zhang san']。 题型:判断题 答案:错误 难度:较难 试题解析:在调用方法split()时,若不传递任何参数,则会使用任何空白字符(包括空格、换行符、制表符等)作为分隔符;若字符串存在连续的空白字符,则按一个空白字符对待,并且返回结果中不包含任何空字符串。

  17. 利用日期时间模块datetime,可以获取“今天”的日期,方法如下: >>> import datetime >>> t=datetime.today()。 题型:判断题 答案:错误 难度:一般 试题解析:第二行语句为>>> t=datetime.date.today()。

  18. >>> '{0:%}'.format(3.5)返回'350.000000%'; >>>’{0:.2f}’.format(1/5)返回'0.2'。 题型:判断题 答案:错误 难度:一般 试题解析:.2f表示保留两位小数 三、编程题(共3题,共30分)

  19. 简单去重问题: 对于给定的列表,要求对列表中每个重复元素只输出一次,请你编程完成这个任务。 例如:对于测试列表a=[11,1,14,23,11,89,14,56,89] 有如下3种算法,请你补全代码。 #方法1 a=[11,1,14,23,11,89,14,56,89] result=[] for i in a:     if i not in result:         ①       print("方法1:",result) #方法2 a=[11,1,14,23,11,89,14,56,89] for i in [j for j in a if a.count(i)>1]:     for x in range(a.count(i)-1):         ②      print("方法2:",a) #方法3 a=[11,1,14,23,11,89,14,56,89] i=0 while i<=len(a)-1:     if a.count(a[i])>1:         ③            else:         ④        print("方法3:",a) 题型:编程题 答案: 答案: (1)result.append(i)(2分)  (2)a.remove(i)(2分)  (3)a.pop(i)(3分)  (4)i+=1(3分) 难度:容易 试题解析: #方法1 a=[11,1,14,23,11,89,14,56,89] result=[] for i in a:     if i not in result:          result.append(i) print("方法1:",result) #方法2 a=[11,1,14,23,11,89,14,56,89] for i in [j for j in a if a.count(i)>1]:     for x in range(a.count(i)-1):         a.remove(i) print("方法2:",a) #方法3 a=[11,1,14,23,11,89,14,56,89] i=0 while i<=len(a)-1:     if a.count(a[i])>1:         a.pop(i)     else:         i+=1 print("方法3:",a)

  20. 密码问题: 根据密码本和电子钥匙,破解笔记本电脑的密码。 密码本是一个非降的整数序列,电子钥匙是一个整数,得到密码的方法是在密码本中找到最接近电子钥匙的整数(如果多个符合条件,输出最小的一个)。 例如: 密码本为下面的列表 a=[1,22,43,45,45,55,60,70,89] 电子钥匙为整数44 满足条件的整数为43和45,最终的密码为43 补全下面的代码: a=[1,22,43,45,45,55,60,70,89] #密码本 k=int(input())   #k为电子钥匙 l=0 r=8 while l+1!=r:     mid=int (   ①  )     if a[mid]<k:            ②         else:         r=mid     if a[r]==k:           ③       if k-a[l] <=     ④   :      print(a[l]) else:     print(⑤) 题型:编程题 答案: 答案: ①  (l+r)/2(2分)  ②  l=mid(2分)  ③  break(2分)  ④  a[r]-k(2分)  ⑤  a[r](2分) 难度:一般 试题解析: a = [1,22,43,45,45,55,60,70,89] k = int(input()) l = 0 r = 8 while l+1 != r:     mid = int((l+r)/2)     if a[mid] < k:         l = mid     else:         r = mid     if a[r] == k:         break if k-a[l] <= a[r]-k:     print(a[l]) else:     print(a[r]) 

罗马数字问题:

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

27写做 XXVII,即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减去数 1 得到的数值 4。同样地,数字 9 表示为 IX。

这个特殊的规则只适用于以下六种情况:

添加图片注释,不超过 140 字(可选)

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

现编写输入一个罗马数字,输出其整数结果,请编程实现上述功能,或补全代码。

例如,当输入XXII时,输出22;当输入MCMXC时,输出1990.

 

rmdict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} 

rm = list(input("请输入正确的罗马数字:"))

num, prew = 0, 1

for ch in rm[::-1]:

   w =     ①    

   if prew > w: 

      num = num - w 

   else :

      num = num + w

   prew =     ②    

print(  ③  )

题型:编程题

答案:

答案:

① rmdict[ch]  (4分)

② w   (3分)

③ num  (3分)

难度:较难

试题解析:

rmdict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} 

rm = list(input("请输入正确的罗马数字:"))

num, prew = 0, 1

for ch in rm[::-1]:

   w = rmdict[ch]

   if prew > w: 

      num = num - w 

   else :

      num = num + w

   prew = w

print(num)

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值