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

2023年06月01日

一、选择题

第 1 题 单选题

1.关于列表和元组的关系,下列描述不正确的是?( )

A. 列表是包含若干元素的有序内存空间

B. 元组是包含若干元素的有序内存空间

C. 列表是包含若干元素的连续内存空间

D. 元组和列表本质上没有区别,只是元组是放在小括号中,列表是放于方括号中而已

第 2 题 单选题

以下序列对象的描述,非法的或者值为False的选项是?( )

A. []

B. [None,0,'',]

C. (8)!=8

D. (8)!=[8]

第 3 题 单选题

对于列表的方法pop()与remove()的区别与相同点,正确的描述是?( )

A. 都是删除与参数表中参数相同的元素

B. pop()没有返回值

C. remove()没有返回值

D. pop()如果不带参数,则表示默认参数值为0

第 4 题 单选题

执行下列代码,正确的答案是?( )

>>> l=[10,0,1,6,12,8]
>>> l.sort(key=float)
>>> l

A. [10.0,0.0,1.0,6.0,12.0,8.0]

B. [0,1,10,12,6,8]

C. [0, 1, 6, 8, 10, 12]

D. [12,10,8,6,1,0]

第 5 题 单选题

下列元组的声明,非法的是哪一项?( )

A. t=0,

B. t=0,1

C. t=(0)

D. t=(0,1)

第 6 题 单选题

下列函数或操作,错误的为哪一项?( )

A.

>>>tuple('hello world')

B.

>>>tuple(range(3))

C.

>>>tuple(str,range(3))

D.

>>>tuple(map(str,range(3)))

第 7 题 单选题

赋值语句path=r'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. 提示出错

第 8 题 单选题

print('\x65')的结果是?( )

A. \x65

B. ‘\x65’

C. e

D. A

第 9 题 单选题

求执行下列操作后的正确结果?( )

>>> url='www.lxsz.com'
>>> url.split()

A. [www,lxsz,com]

B. ['www’,’lxsz’,’com']

C. [www.lxsz.com]

D. ['www.lxsz.com']

第 10 题 单选题

运行下列代码,正确的结果是?( )

 >>>print("{:06.2f}".format(3.1415926))

A. ’003.14’

B. 003.14

C. ’3.14’

D. 3.14

第 11 题 单选题

下列语句的输出结果是?( )

for i in 'xyz':
	for j in range(1,3):
		print(i,end='')
		if i=='z':
			break

A. xxyzz

B. .xxyyzz

C. xxyy

D. xxyyz

第 12 题 单选题

请确认以下程序中有几处错误?( )

input turtle
colors=['blue','red','green','yellow']
t=turtle.Pen()
for i in range(100)
	t.color(colors[i%5])
	w+=2
	t.forward(w)
	t.left(89)

A. 1

B. 2

C. 3

D. 4

第 13 题 单选题

下列语句的输出结果是?( )

for i in range(6):
	if i%2==0:
		break
	else:
		print(i,end=',')

A. 1,3,5,

B. 1,3,5

C. 0,2,4,

D. 没有输出

第 14 题 单选题

有如下 Python 程序段:

import random
c=0
s=0
for i in range(0,10):
	n=random.randint(1,101)
	if n%2==0:
		s+=i
		c+=1
print(i)

该程序段被执行后,下列说法不正确的是?( )

A. 把程序 s+=i 改为 s=s+i 后,得到的结果是一样的。

B. i=9

C. 语句 c+=1 可能执行了 10 次

D. 变量 s 中存储的生成的 10 个随机数中偶数相加的和

第 15 题 单选题

下列声明字典的语句,错误的是?( )

A. d={}

B. d={‘name’:'Tom',’age’:20,’salary’:3900}

C. d=dict(title='Python',author='Tom',price=59)

D. d=dict[('name','Jerry'),('age',20)]

第 16 题 单选题

已知字典dict={"姓名":["张三","李四","王五"],"投票数":[18001,19682,23468]},则print(dict["姓名"][1],dict["投票数"][0])的结果为?( )

A. 张三 18001

B. 张三 19682

C. 李四 18001

D. 李四 19682

第 17 题 单选题

下列说法,正确的是?( )

A. 集合类型是一个元素集合,元素之间有序

B. 集合类型是一个元素集合,元素不能重复

C. s=set{1,2,’3’},声明了一个集合S

D. 集合类型是一个元素集合,元素之间无序,元素类型必修相同

第 18 题 单选题

运行下列代码,正确的结果是?( )

>>>x = set('runoob')
>>> y = set('google')
>>> x | y 

A. {‘o’,’o’}

B. {'r', 'b', 'u', 'n'}

C. {'l', 'n', 'r', 'e', 'b', 'g', 'u', 'o'}

D. {'o'}

第 19 题 单选题

使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表l=['1','3','5','7']转换为列表[1,3,5,7]的函数写法为?( )

A. map(int,l)

B. map(l,int)

C. list(map(int,l))

D. list(map(l,int))

第 20 题 单选题

m=[i**2 for i in range(4) ]的结果的是?( )

A. 16

B. 8

C. [0, 1, 4, 9]

D. [1, 4, 9, 16]

第 21 题 单选题

import random
fibo = [1] * 11
for i in range(2, 11):
	fibo[i] = fibo[i - 1] + fibo[i - 2]
	n = random.randint(1,10)
print(fibo[n])

运行该程序段,输出结果不可能是?( )

A. 1

B. 21

C. 35

D. 89

第 22 题 单选题

下列代码的运行结果是?( )

def jishu(n):
	return n % 2 == 0
newlist = filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
n=list(newlist)
print(n)

A. [1,2,3,4,5,6,7,8,9,10]

B. [10,9,8,7,6,5,4,3,2,1]

C. [2,4,6,8,10]

D. [1, 3, 5, 7, 9]

第 23 题 单选题

import random
lis= [0] * 6
i = 0
while i < 6:
	lis[i] = random.randint(1, 100)
	if lis[i] % 2 != i % 2:
		i += 1
	else:
		break

运行该程序段,lis[0]~lis[5]各元素值可能的是?( )

A. [3, 19, 0, 0, 0, 0]

B. [95, 44, 39, 24, 0, 0]

C. [2, 37, 88, 61, 56, 9]

D. [0, 0, 0, 0, 0, 0]

第 24 题 单选题

有关jieba库的描述,错误的是?( )

A. jieba库的分词原理是利用中文词库,将待处理的内容与词库比对后找到最大概率的词组

B. jieba.lcut(s)返回的可能是一个元组类型

C. jieba.cut(s)返回的可能是一个元组类型

D. jieba.add_word(w)向分词词典中增加新词w

第 25 题 单选题

要生成如下效果的图片,用不到的是以下哪个python库?( )

A. jieba

B. wordcloud

C. matplotlib

D. pandas

二、判断题

第 26 题 判断题

对于列表l=[(0,),1,2,3,4],all(l)的值是True。

A. 正确

B. 错误

第 27 题 判断题

>>>list(zip("abcd",range(3)))

返回出错

A. 正确

B. 错误

第 28 题 判断题

>>> '{0:%}'.format(3.14)返回'3.140000%';
>>>'{0:.2f}'.format(3.14)返回'3.14'。

A. 正确

B. 错误

第 29 题 判断题

>>>str='nihao\nliping\nzhang san'
>>> str.split()

结果是:['nihao', 'liping', 'zhang', 'san']

A. 正确

B. 错误

第 30 题 判断题

>>> dict(enumerate(range(3)))

返回值为{‘0’: 0, ‘1’: 1, ‘2’: 2}

A. 正确

B. 错误

第 31 题 判断题

某 Python 程序段如下:

s = "Errors should never pass silently."
d = {}
for ch in s:
	if ch in d:
		d[ch] += 1
	else:
		d[ch] = 1
print(d["e"])

运行该程序段,输出结果是2。

A. 正确

B. 错误

第 32 题 判断题

set()函数可以用于生成集合,输入的参数可以是任意组合数据类型,返回结果是一个无重复且有序的集合。

A. 正确

B. 错误

第 33 题 判断题

列表、元组、字符串均可以用set()转换为集合,例如:>>>set((1,2,2,3,4)),结果是{1,2,3,4}

A. 正确

B. 错误

第 34 题 判断题

下列两个语句的功能可能是等价:

>>> l=[i*i for i in range(5)]
>>> m=list(map(lambda x:x*x,range(5)))

A. 正确

B. 错误

第 35 题 判断题

利用日期时间模块datetime,可以获取“今天”的日期,方法如下:

>>> import datetime
>>> date.today().weekday()

如果“今天”是星期天,则返回0

A. 正确

B. 错误

三、编程题

第 1 题 问答题

输入年月日,计算这一天是这一年的第几天。编写自定义函数完成程序功能,完善程序代码。

根据年月日,计算这一天是这一年的第几天

函数名 def getDays(year)

参数 year:表示日期;字符串类型如20211201

返回值 :整数。表示这一天是这年的第几天

def getDays(year):
	s = 0
	y = int(year[:4])
	m = int(year[4:6])
	d = int(year[6:8])
	monthdays = (31,28,31,30,31,30,31,31,30,31,30,31)
	for i in range(  ①  ):
		s = s +    ②  
	if (y % 4 ==0 and y % 100 !=0 or y % 400 ==0) and   ③  :
		s = s + 1
	s = s + d
	return s
year = "20211201"
theday =   ④  
print(theday)

第 2 题 问答题

素数是只能被1和本身整除的正整数,因式分解就是将一个正整数分解成若干个素数相乘的形式。用户从键盘输入小于1000的整数,对其进行因式分解,例如:10=25,60=2235。完善程序代码。

用户从键盘输入小于1000的整数,对其进行因式分解。例如:10=25,60=2235。

x = input('Please input an integer less than 1000:')
x = int(x)
t = x
①  
result = []
while True:
	if t == 1:
		break
	if t % i == 0:
		result.  ②
		t = t/i
	else:
		  ③
s=''
for i in result:
	s=  ④
s=  ⑤
print( x,'=',s)

第 3 题 问答题

设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有三个单字符字符串和一个整数。三个字符表示三个杆子的编号,整数为盘子的数目。

根据上述计算规则,补全下列代码。

函数名:hannota(n,a,b,c)

参数表:n -- 正整数表示盘子数,a --a杆子,b --b杆子,c --c杆子。

返回值:移动路径。

示例:n=3,返回:

A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
def hannota(n,a,b,c):
	if n == 1:
		print(a ,"-->", c)
		return None
	if n == 2:
		print(a,"-->",b)
		Print(  ① )
		print(b,"-->",c)
		return None

	Hannota(  ②  )
	print(a,"-->",c)
	Hannota(  ③  )
a = "A"
b = "B"
c = "C"
n =int(input('请输入黄金圆盘数量n:'))
hannota(n,a,b,c)