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

2023年06月01日

一、选择题

第 1 题 单选题

下面有关random的常用方法,描述错误的是? ( )

A. random.random()生成一个[0.0,1.0)之间的随机小数

B. random.randint(a,b)生成一个[a,b]之间的随机整数

C. random.choice(seq)从序列中随机选择一个元素

D. random.uniform(a,b)生成一个[a,b]之间的随机字符

第 2 题 单选题

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

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

B. jiebAlcut(s)返回的可能是一个列表类型

C. jiebAcut(s)返回的可能是一个字符串类型

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

第 3 题 单选题

根据以下代码,描述错误的选项是? ( )

import wordcloud
txt="what's your name?"
w=wordclouWordCloud(background_color="white")
w.generate(txt)
w.to_file('px.png')

A. background_color指定词云图片的背景颜色,默认为白色

B. generate向WordCloud对象中加载文本txt

C. to_file将词云输出为图像文件,.png或.jpg格式

D. wordclouWordCloud()代表一个文本对应的词云

第 4 题 单选题

已知 l=['Hello', 'World', 'Good', 'morning', 'LUCK'],则 list[1][2]的返回值为? ( )

A. 'HW'

B. 'e'

C. 'o'

D. 'r'

第 5 题 单选题

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

A. []

B. [None,0,'',]

C. (3,)!=3

D. (3)==[3]

第 6 题 单选题

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

def ous(n):
	return n % 2 == 1
newlist = filter(ous, [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]

第 7 题 单选题

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

A. 都是删除对象中的元素

B. pop()有返回值

C. remove()没有返回值

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

第 8 题 单选题

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

l =[1,2,3,4,5]
a1=1;a2=1
for i in l:
	if i % 3 == 0:
		a1 += i
	else:
		a2 += i
print(a1-a2)

A. -10

B. -9

C. -8

D. -7

第 9 题 单选题

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

a,b,c = 16,17,18
s = 0
if a > b:
	s = x
elif b > c:
	s += c
s-= 1
print(s)

A. 2

B. 1

C. -1

D. 0

第 10 题 单选题

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

A.

>>>tuple('hello world')

B.

>>>tuple(range(1:3))

C.

>>>tuple(range(3))

D.

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

第 11 题 单选题

已知 s='3.1415926535898',则 s[4:5]+s[-4:-2]的返回值为? ( )

A. '41589'

B. '4158'

C. '458'

D. '158'

第 12 题 单选题

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

A. \x66

B. '\x66'

C. B

D. f

第 13 题 单选题

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

>>> st='www.lxjy.com'
>>> st.split()

A. [www,lxjy,com]

B. ['www','lxjy','com']

C. ['www.lxjy.com']

D. [www.lxjy.com]

第 14 题 单选题

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

st = ['zhangsan','lisi','wangwu','zhaoliu','zhouba']
ans = st[0]
n = len(st[0])
for i in st:
	if len(i)> n:
		n = len(i)
		ans = i
print(ans)

A. zhangsan

B. lisi

C. zhaoliu

D. zhouba

第 15 题 单选题

运行下列代码,输出结果为? ( )

s = [1,3,4, 3,1]
m,sum =s [0],0
for i in range(1,len(s)):
	if s[i] > m:
		m = s[i]
	sum += m
print(sum)

A. 12

B. 15

C. 18

D. 8

第 16 题 单选题

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

import 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

第 17 题 单选题

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

for i in range(1,7):
	if i%3==0:
		break
	else:
		print(i,end=',')

A. 1,2

B. 1,2,

C. 1,2,4,5

D. 没有输出

第 18 题 单选题

执行如下 Python 程序段后, 说法不正确的选项是? ( )

a=[2,1,3,2,4,3]
n=len(a)
for i in range(2):
	k=i
	for j in range(i+1,n):
		if a[k]>a[j]:
			k=j
	if i!=k:
		a[i],a[k]=a[k],a[i]
print(a) 

A. a= [1, 2, 3, 2, 4, 3]

B. for i in range(2)与for i in range(0,2)等价

C. k的值为1

D. for j in range(i+1,n):与for j in range(i+1,n+1):等价

第 19 题 单选题

2班级同学的分组情况以及考试成绩分别存储在字典xs和列表cj中。若xs={"第1组":["小张","小李","小王"],"第2组":["小黄","小霞","小斌"],"第3组":["小蓝","小华","小诚"]},cj=[{"小张":90,"小李":80,"小王":75},{"小黄":86,"小霞":70,"小斌":89},{"小蓝":67,"小华":90,"小诚":77}],访问第1组第2位同学姓名以及他的考试成绩的方法为? ( )

A. xs["第1组"][1],cj[0]["小李"]

B. xs["第1组"][1],cj[1]["小李"]

C. xs["第1组"][2],cj[0]["小李"]

D. xs["第1组"][2],cj[1]["小李"]

第 20 题 单选题

执行如下 Python 程序段后,结果正确的选项是? ( )

d={1:2,3:4,5:6,7:8}
s=[5,1,7]
ans=""
for i in s:
	ans +=str(d[i])
print(ans)

A. 517

B. 846

C. 628

D. 625

第 21 题 单选题

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

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

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

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

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

第 22 题 单选题

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

>>>x = set('runoob')
>>> y = set('g','o','o','g','l','e')
>>> x | y 

A. {'o','o'}

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

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

D. {'o'}

第 23 题 单选题

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

A. map(int,s)

B. map(s,int)

C. list(map(s,int))

D. list(map(int,s))

第 24 题 单选题

4 if 2>3 else 5的结果的是? ( )

A. 4

B. 5

C. False

D. 抛出错误

第 25 题 单选题

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

import random
st='nihaoworld'
a=random.randint(3,6)
n=len(st)
if len(st[:a])<len(st[a:]):
	ans=st[a:]+st[:a]
else:
	ans=st[:a]+st[a:]
print(ans)

A. oworldniha

B. aoworldnih

C. haoworldni

D. nihaoworld

二、判断题

第 26 题 判断题

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

A. 正确

B. 错误

第 27 题 判断题

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

返回一个元组结果。

A. 正确

B. 错误

第 28 题 判断题

>>> '{0:%}'.format(3)返回'300%';
>>>'{0:6.2f}'.format(3)返回'3.00'。

A. 正确

B. 错误

第 29 题 判断题

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

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

A. 正确

B. 错误

第 30 题 判断题

range(10,0,-1)表示从对象的下标为10的元素开始,倒序取到下标为0的元素,但是不包括下标为0元素。

A. 正确

B. 错误

第 31 题 判断题

字典是由键值对组成的。字典的键必须唯一,且不可变。字典通过键key去修改value值,如果key不存在,则会报错。

A. 正确

B. 错误

第 32 题 判断题

对于集合S,S.remove(x)可以移除S中元素x,如果x不在集合S中,产生KeyErrror异常。

A. 正确

B. 错误

第 33 题 判断题

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

A. 正确

B. 错误

第 34 题 判断题

下列语句的功能是创建一个0-10之间偶数的列表:

a = [x for x in range(11) if x%2==0]

A. 正确

B. 错误

第 35 题 判断题

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

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

如果“今天”是星期六,则返回6。

A. 正确

B. 错误

三、编程题

第 1 题 问答题

二进制数转十六进制数,可以先采用“按权展开,逐项相加”法,把二进制转十进制;再采用“除16求余法,逆序输出”的方法,把十进制数转为十六进制数。下列程序实现将二进制数转十六进制数,请完善以下程序代码。

st="0123456789ABCDEF"
num = input("请输入一个二进制整数:")
n =    ①    
s=0
ss=""
for i in range(n):
	x=      ②      
	s+=x
t=s
while t>0:
	ss=      ③    
	t=     ④    
print(ss)

第 2 题 问答题

验证哥德巴赫猜想

2000以内的不小于4的正偶数都能够分解为两个素数之和,验证哥德巴赫猜想对2000以内的正偶数成立。根据问题描述,为了验证哥德巴赫猜想对2000以内的正偶数都是成立的,要将正偶数整数分解为两部分,然后判断分解出的两个正整数是否均为素数。若是,则满足题意,否则应重新进行分解和判断。

输入:每次输入一个2000以内的不小于4的正偶数n。

输出:输出n能被分解成的素数a和b,如果不止一组解,则输出其中a最小的那组解即可。

请你补全代码。

import math

判断是否为素数

def fun(n):
	if n == 2:
		return 1
	if n % 2 == 0:
		return 0
	i = 3
	while i <= math.sqrt(n):
		if    ①   :
			return 0
		i += 2
	return 1  # n是除2以外的素数返回1

验证哥德巴赫猜想

def guess(n):
	k = 0
	i = 2
	while i <= (n // 2):
		if fun(i):
			if fun(n - i):
				print("%d  %d\n" % (  ②  ))
				  ③  
		if i != 2:
			i += 1
		if k == 1:
			  ④   #结果得到验证,跳出循环
		i += 1

while True:
	n = input("请输入2000以内>=4的正偶数:(输入'stop'结束运行)")
	if n=="stop":
		break
	else:
		  ⑤     # 调用方法验证哥德巴赫猜想

第 3 题 问答题

二维数组打印杨辉三角形

在屏幕上打印杨辉三角形,杨辉三角形又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。由于位于杨辉三角形两个腰上的数都为1,其他位置上的数等于它肩上两个数之和,基于杨辉三角形的这个特点,可以使用二维数组打印出杨辉三角形。Python程序实现打印杨辉三角形如下,请你补全代码。

控制打印的行数,行数过大会造成显示不规范

定义一个行为14,列为14的二维列表

n = 0
a = [([0] * 14) for i in range(14)]  
n = int(input("请输入杨辉三角的行数(1-13):"))

计算杨辉三角中的数值

for row in range(1, n+1):
	a[row][1] = a[row][row] = 1
for row in range(3, n+1):
	for column in range(2, (row-1)+1):
		a[row][column] =   ①   +   ②  

打印杨辉三角

for row in range(1, n+1):
	for k in range(1,   ③  ):
		print("   ", end="")  
	for column in range(1, row+1):
		print("%6d" %(  ④  ), end=" ")
	print()