2023年12月青少年软件编程Python等级考试(五级)真题试卷
剩余时间 --:--:--
单选题 共 25 题
1.
下面代码的输出结果是?( )
dict1 = {1: 10, 2: 20, 3: 30}
dict2 = {2: 40, 4: 50}
dict1.update(dict2)
print(dict1)
2.
小明正在编写一个算法,用于统计一段文本中每个单词出现的频率,并按照频率从高到低进行排序。他使用 Python 字典来记录每个单词及其出现次数。以下哪个选项描述了字典的特点?( )
3.
列表a=[1,2,3,4,5,6],则a[1]+a[2]的值是?( )
4.
列表list1=[2023,"python","青少年","信息","素养"],则list1[3:]的值是?( )
5.
列表a=[1,2,3,4,5,6],则与a[::-1][-1]的结果相同的表达式是?( )
6.
列表list1=[2023,"python","青少年","信息","素养"],则len(list1)的值是?( )
7.
产生一个包含5个元素,公差是3,最大数是13的等差数列,假设range推导式为:range(a,b,c),a,b,c的值正确的是?( )
8.
sfz="987654abcd12345678",下列推导式的值为"abcd"的是?( )
9.
a=[1,2,3,4,5,6,7,8,9,10,11,12],下列索引切片的值为[6,7,8]的是?( )
10.
Python中 print('八进制{0:o}'.format(71)) 正确的输出结果是?( )
11.
下面可以正确输出 It's one o'clock. 字符的Python语句是?( )
12.
Python中字符串可以使用反斜线进行转义,实现某些难以用字符表示的效果。下面可以实现换行符,将光标位置移到下一行开头的转义字符是?( )
13.

科技社团需要输出每个成员的姓名、年龄、身高信息。

print("%s 年龄是 %d 身高是 %.2f" %info_tuple)

与之相对应的元组赋值语句是?( )

14.
下列哪个选项可以创建一个空集合?( )
15.
以下哪个选项可以向集合对象中添加一个元素?( )
16.

下列程序段输出的结果是?( )

st = 'abcde'
def change(n):
    s = ''
    for i in range(-1,-len(n),-1):
        s += st[i]
        return s
    print(st,',',change(st))
17.
lis=list(range(10,20,2))
def change(lis):
    lis.reverse()
    print(lis)
change(lis)
print(lis)

以上程序段输出的内容是?( )

18.
表达式dict(zip(range(10,0,-2),range(0,10,2)))的值,不可能是以下哪一项?( )
19.

下列代码输出的结果是?( )

lis = list(range(1,4))

print(lis)

20.

有Python程序段如下:

tup=("python","c++","scratch")
a=tup[0]
b=tup[1]
c=tup[2]
tup1=(c,b,a)
print(tup1)

程序运行后,输出的结果是?( )

21.
已知有元组tup1=("语文","数学","英语"),tup2=(100,90,98)执行语句print(tup1[1]+str(tup2[1]))后输出是?( )
22.
在Python中导入math模块,执行语句x=math.ceil(6.26)后,变量x的值为?( )
23.
合唱比赛时,需要对10个班的出场顺序随机产生,对每个班级编号1-10,存入列表a,即a=[1,2,3,4,5,6,7,8,9,10],下列语句可以实现该功能的是?( )
24.

某Python程序如下:

import jieba
s="信息技术给人们的生活带来许多的便利"
fc=jieba.cut(s)
s="/".join(fc)
print(s)

程序运行后,输出的结果是?( )

25.
有如下Python程序段,运行之后,结果不可能的是?( )
import random
i=1;s=""
while i<=6:
   a=random.randint(0,9)#产生[0,9]之间的随机整数,包含9
   if a % 3==(i+1)%3:
       s+=str(a)
       i+=1
print(s)
判断题 共 10 题
1.
对于两个字典 dict1 = {'a': 1, 'b': 2, 'c': 3} 和 dict2 = {'c': 3, 'b': 2, 'a': 1},dict1 == dict2 的返回值为 False。( )
2.
同一个列表中的元素的数据类型必须相同。( )
3.
multiples = [i for i in range(30) if i % 3 == 0] ,则此推导式中,multiples中共有10个元素。( )
4.

s = "abcdeffffg"

z = s.replace("f", "z", 3)

print(z)

输出结果为"abcdefzzzg"。( )

5.

s="There is a will,there is a way."

print(s.find('w'))

输出结果为12。( )

6.
集合是一个无序的不重复元素序列,用{}作为界定符,如集合{1,2,{3:4},5,6}。
7.
集合可以通过索引访问和修改元素。( )
8.
print(range(2)+range(3))的结果为:(0,1,0,1,2)。( )
9.
有元组tup1=(12,34,56,78),可以通过语句“tup1[0]=100”将“12”修改为“100”。( )
10.

使用如下Python语句,可以获取当前时间并按特定格式输出,如(2023-07-07 19:10:45)。( )

import time

print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

问答题 共 3 题
1.

单词表问题

小明是一名学生,他正在学习英语单词的拼写。他想要创建一个单词表,用于存储他学习过的单词,并统计每个单词出现的次数。请你帮助他补全代码完成以下任务: 

(1)创建一个空的字典 word_dict,用于存储单词和对应的出现次数;

(2)使用 input() 函数,提示小明输入一个单词,并将其存储到变量 word 中;

(3)检查字典 word_dict 中是否已经存在该单词。如果存在,则将该单词的出现次数加一;如果不存在,则将该单词添加到字典中,并将其出现次数设置为一;

(4)重复步骤 2 和步骤 3,直到小明输入字符串's'为止;

(5)创建一个空的集合 unique_words,用于存储所有不重复的单词;

(6)遍历字典 word_dict 的键(即单词),将每个键添加到集合 unique_words 中;

(7)打印出字典 word_dict 中每个单词和对应的出现次数;

(8)打印出集合 unique_words 中的所有不重复的单词。 

样例:

输入

请输入一个单词:hello 

请输入一个单词:world

请输入一个单词:hello

请输入一个单词:python

请输入一个单词:s


输出

单词和出现次数:

hello : 2

world : 1 

python : 1

 

不重复的单词:

world

hello

python

 

程序:

word_dict = {} 
while True:
     word = input("请输入一个单词:")
    if word == "s":
        break
    if word in word_dict: 
                ①        
    else:
        word_dict[word] = 1
unique_words =        ②       
for word in word_dict:
    unique_words.add(word)
print("单词和出现次数:") 
for word in word_dict:
            ③        
print("不重复的单词:")
for word in unique_words:
            ④
2.

 打字正确率问题 

设计一个判断打字正确率程序。

如样板字符串为“我爱你中国”,如果输入的字符串长度与样板字符串长度相同,则调用编程模板中Percentage函数去计算这两个字符串对应位置相同的字符个数占字符总长度的百分比,按照示例的格式输出;

例如:

如果样板字符串为“我爱你中国”

输入字符串“我爱你中国”

输出:

匹配率:100%

输入字符串"我爱你中华"

输出:

匹配率:80%

输入字符串“我爱你”

 

输出:

输入字符串长度不一致,请重新运行本程序!

样板程序:

def Percentage(source,target):
    s_list=        ①        
    t_list=        ②        
    c_list=        ③        
    return  len(c_list)/len(s_list)
s1 = "我爱你中国"
print("请输入以下内容:\n"+s1)
s2 = input()
if        ④        :
    print("输入字符串长度不一致,请重新运行本程序!")
else:
    print(        ⑤        )
3.

过马路问题

在遥远的mars星球,即将入学的小精灵们正在学习过马路。它们需要请精灵学院的哥哥姐姐们的指导。

精灵学院共有C名学员(1≤C≤2000),编号为1...C,每名学员i愿意在时间Ti帮助小精灵。当前共有N名小精灵(1≤N≤2000),编号为1...N,其中小精灵j能够在时间Aj和时间Bj之间过马路。当前情况下,结伴过马路是最好的办法,每位小精灵j想找到一位学员i结伴过马路,i和j必须满足Aj≤Ti≤Bj。 

每名学员最多只能结伴一名小精灵,每名小精灵最多结伴一名学员,请帮助计算可以得到的最大结伴数。 

输入格式:

第一行输入包含C和N。 

接下来C行包含T1 ... TC,

再接下来N行包含用于j = 1 ... N的Aj和Bj(Aj≤Bj)。 A,B和T都是不超过30000的正整数。

输入样例:

5 4

7

8

2 5

4 9

0 3 

8 13 

输出格式:

 一共整数,表示精灵学院学员和小精灵的最大结伴数。

输出样例:

3


n,m= map(int, input().split())
t=[];a=[];b=[];h=[]
for i in range(1,n+1):
    x=int(input()) 
    t.append(x)
    h.append(0)   
for i in range(1,m+1):
           ①        = map(int, input().split())
    a.append(x)
     b.append(y) 
t.        ②         
for i in range(m-1):
    for j in range(m): 
       if((a[i]>a[j]) or (a[i]==a[j] and b[i]>b[j])):
           a[i],a[j]=a[j],a[i]
               ③        
ans=0
for i in range(m):
    for j in range(n):
       if(t[j]>=a[i] and t[j]<=b[i] and h[j]==0):
                   ④        
           h[j]=1
           break 
       if(t[j]>b[i]):
           break
print(ans)


C++ 编辑器
输入
输出