2025年6月青少年软件编程Python等级考试(五级)真题试卷
剩余时间 --:--:--
单选题 共 25 题
1.

天文学社的小明需要用Python程序正确输出地月平均距离(384400公里)并转换为万公里单位。以下代码的输出结果是什么? ( )

distance=384400

print("地月平均距离:{:.1f}万公里".format(distance / 10000))

2.

某基因分析程序需截取DNA序列("ATCGTA")的第2到第4个碱基并大写输出。以下代码的输出结果是什么? ( )

dna="ATCGTA"
print(dna[1:4].upper())
3.

小明在Python中输入了一个单词 word="elephant",他想找到这个单词的第4个字母。以下哪段代码能正确实现?( )

4.

小红需要将变量score=95.5 格式化为以下输出:

"本次数学考试得分:95.50"

她应该使用的代码是?(

5.

小明的学习小组需要整理数学考试成绩,将高于等于80分的记录标记为"A"60-79分标记为"B",其余标记为"C"。已知成绩列表为scores=[75, 92, 58, 84, 65],以下哪种推导式能正确生成等级列表? ( )

6.

已知选修课学生名单 course1 = {"张三", "李四", "王五"}, course2={"李四", "赵六", "王五"}。要找出同时选修两门课的学生,应使用的推导式是?( )

7.

班级组织户外活动,老师要统计带水杯的同学名单。已知学生信息列表为:

students=[{"name": "小明", "has_cup": True}, {"name": "小红", "has_cup": False}, {"name": "小刚", "has_cup": True}],正确的推导式是?( )

8.

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

for i in range(5, 17, 3):
    print(i, end=',')
9.

以下Python程序段需要print(i)语句执行5次,则①处不能填入的是? ( )

for i in range(     ①    ):
print(i)
10.

韩信带1500名士兵打仗,战死四五百人,剩下的士兵排队:站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。下列代码中不能正确计算剩余士兵人数的是? ( )

11.

Python程序如下,运行后输出的图形是?( )

s=''
for i in range(3):
    for j in range(1,i+2,2):
        s=s+'*'
    print(s)
12.

Python程序如下:

import random
list1=[1,2,3,4,5,6,7,8,9,10,11,12]
s=random.________(list1,6)       
print(s)

现想随机取出列表list1中的6个元素,划线处应填入的代码为?( )

13.

Python程序如下:

import math
x=math.ceil(5/3)
y=math.floor(11/3)
if x>y:
    print(math.pow(y,2))
else:
    print(math.pow(x,2))

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

14.

Python中,利用datetime模块的strftime()方法,可以将日期和时间格式化成字符串。下列错误的格式是? ( )

15.

Python程序段如下:

a=[0]*5
for i in range(5):
    num=random.randint(1,10)
    if num%2==0:
        a[i]=num

程序运行后,下列输出的列表a不可能的是?( )

16.

小阳正在用Python语言编写一个程序,用于处理一组学生的成绩数据。他使用列表存储成绩,并尝试提取所有偶数位置的成绩(从0开始计数)。以下是他的代码:

scores=[96, 87, 72, 66, 99]

print(scores[1::2])

请问这段代码的输出结果是什么?

17.

有两个列表,一个包含学生的名字 names=["李明", "王华", "张亮"],另一个包含他们的年龄 ages=[12, 10, 13]。使用 zip() 函数将这两个列表合并为一个包含元组的列表,每个元组包含一个名字和对应的年龄。在下列4个选项中,哪个选项中的代码补全在①处后,可以正确的实现此功能?( )

names = ["李明", "王华", "张亮"]
ages = [12, 10, 13]
merged_list =    ①    
print(merged_list)
18.

假设有一个列表 sports = ["football", "run", "basketball"],需要向这个列表中添加一个新的元素 "pingpang"。下列哪个选项里的代码执行最快?( )

sports = ["football", "run", "basketball"]
____________
19.

期中考试阅卷系统导出的成绩是按字典数据保存的,陈老师想提取字典中所有学生的分数,并转换为列表。

下列哪个选项中的代码能帮陈老师实现这个想法呢?

scores = {'敖闰': 90, '哪吒': 85, '申公豹': 88}
_________________
20.

小华正在编写一个程序,用于统计班级学生的成绩分布。他使用字典存储成绩等级和对应的学生人数。以下是他的代码:

grades = {"A": 5, "B": 10, "C": 15, "D": 5}
grades["F"] = grades.get("F", 0) + 3
print(grades["F"])

请问这段代码的输出结果是?

21.

小张正在编写一个程序,用于管理一个餐厅的菜单。现在需要将所有菜品的价格统一提高2元。以下是他的代码,请选择正确的语句填到①处,补全代码。

menu = {"Burger": 10, "Pizza": 15, "Salad": 8}
for item in menu:
          ①     
print(menu)
22.

Python语言中,tuple1=('aa', 'bb', 'cc', '22'),则tuple1.index('22')的值是?( )

23.

下面Python程序运行结果是? ( )

s=(1,2,3,4,[5,6])
s[4][0]=7
print(len(s))
24.

以下哪个选项能正确地计算集合中元素的个数?(

25.

执行以下代码后,集合s的内容是?( )

s = {1, 2, 3} 
s.add(3) 
s.update({4, 5})
判断题 共 10 题
1.

Python中,字符串s="hello"的最后一个字符可以通过s[-1] 访问。( )

2.

Python中,字符串可以通过索引直接修改,例如s="cat"; s[0]="b"会将字符串变为 "bat"。( )

3.

已知numbers=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]

小明编写了以下代码:

result = [x for x in numbers if x % 2 == 0 and x > 10]

这段代码能正确生成符合条件的列表 [10, 12, 14]。( )

4.

python中,range函数生成的整数序列中的元素可以通过索引访问。( )

如:

>>> r=range(1,8,2)
>>> r[1]
5.

Python中用wordcloud库绘制词云,其中有句代码为:

w=wordcloud.WordCloud(background_color="white",height=450,width=300)

最终词云生成在高为450像素,宽为300像素的白色长方形中。( )

6.

Python中,因为字典members中有重复的值,所以运行下面的代码会报错。( )

members = {
    "001": "Alice",
    "002": "Bob",
    "003": "Alice"
}
print(members["003"])
7.

列表L=[1,2,3,4,5],则表达式L[::-1][-1]的结果与L[0]相同。( )

8.

元组t=([1,2],'a','b'),执行语句t[0][2]=3,元组会更改为:t=[1,2,3],'a','b')。( )

9.

Python中,集合中的元素可以是列表。( )

10.

集合可以使用数学运算符进行交集、并集等运算。(

问答题 共 3 题
1.

传感器采集数据

在人工智能的多模态数据处理中,不同传感器采集的特征数据需要融合。每个传感器用唯一ID标识,数据格式为“ID:特征值”。

编写程序将多个传感器的特征值合并,并计算每个ID的加权调和平均数(权重由出现次数决定)。 给定若干行传感器数据(格式为ID:值),请按以下规则处理:

数据去重:同一ID的重复数据仅保留最后一次出现的值;

权重计算:统计每个ID的数据出现总次数 ;

融合计算:输出每个ID的值*出现次数(即权重与最后值的乘积)。

例如:

输入:

 TempS:20

 PressS:150

 TempS:25

 HumS:60

输出:

 HumS:60

 PressS:150

 TempS:50 # TempS出现2次,最后值为25 → 25*2=50

下面是小明编写的Python代码,请你将空白内容补充完整。

sensor_info = {} # 存储每个传感器 ID 的最后值和出现次数
while True:
    data_line = input()# 获取用户输入的一行数据
    if data_line == 'p':# 假设当输入p时停止输入
       break
    parts = data_line.split(':')# 把输入的行按冒号分割成 ID 和值
    sensor_id = parts[   ①   ]
    sensor_value = float(parts[1])
    if sensor_id in sensor_info: # 检查这个 ID 是否已经在字典里
        sensor_info[sensor_id][0] = sensor_value
        sensor_info[sensor_id][1] = sensor_info[sensor_id][   ②  ] + 1 #统计出现次数
    else:
        sensor_info[sensor_id] = [sensor_value, 1]
if len(sensor_info) == 0:# 检查字典里是否没有数据
    print("NULL")
else:
    sorted_ids = sorted(   ③    )# 对字典里的 ID 进行排序
    for current_id in   ④   :
        last_value = sensor_info[current_id][0]
        count = sensor_info[current_id][1]
        # 计算加权值
        weighted_value =   ⑤    
        print(f"{current_id}:{weighted_value}")
2.

购物车系统

派森同学用Python语言写了一个简易的购物车系统。这个系统可以存储用户添加到购物车中的商品名称和价格,用空格隔开。用户输入结束后,可以按价格从高到低打印输出购物车清单,最后输出一共有几种商品和总价。请补全横线上的代码,实现该功能。

shopping_cart = []   # 初始化购物车列表
print("欢迎使用购物车系统!")
print("请输入商品名称和价格,输入'结束'以停止添加。")
while True:
    item = input("请输入商品名称和价格(用一个空格隔开): ")
    if item == '结束':
        break
    name, price = item.split()
    shopping_cart.    ①    ((name.strip(), float(price.strip())))  #将商品名称和价格以元组的形式添加到购物车列表里
shopping_cart.sort(key=lambda x: x[1], reverse=    ②  )  # 按价格从高到低排序
print("\n购物车内容(按价格从高到低):")
# 输出购物车内容
for item in shopping_cart:
    print(f"商品名称: {   ③   }, 价格: {item[1]:.2f}")
# 计算总价
total_price = sum(item[1] for item in shopping_cart)
# 输出一共有几种商品和总价
print(f"\n一共有 {    ④  } 种商品,总价为 ¥{total_price:.2f}")

——————示例运行结果————————

欢迎使用购物车系统!

请输入商品名称和价格,输入'结束'以停止添加。

请输入商品名称和价格(用一个空格隔开): 笔记本 3.5

请输入商品名称和价格(用一个空格隔开): 中性笔 8

请输入商品名称和价格(用一个空格隔开): 结束

购物车内容(按价格从高到低):

商品名称: 中性笔, 价格: 8.00

商品名称: 笔记本, 价格: 3.50

一共有 2 种商品,总价为 ¥11.50

3.

字符串循环移位

字符串的循环移位过程是将字符串的第一个字符移动到末尾形成新的字符串,例如,现有一个字符串"AABCD",移位一次后产生新字符串"ABCDA",再移位一次产生新字符串"BCDAA",依次类推。下面的程序实现的功能是:首先输入两个字符串,判断其中较短的字符串是否是较长的字符串通过若干次循环移位后的新字符串的子串。例如输入字符串"CDAA""AABCD",因为"CDAA"是由"AABCD"两次移位后产生的新字符串"BCDAA"的子串,所以结果输出"Yes"。如果输入字符串"ABCD""ACBD",因为"ABCD"不是"ACBD"循环移位产生的新字符串的子串,"ACBD"也不是"ABCD"循环移位产生的新字符串的子串,所以输出"No"

实现上述功能的Python程序如下,请在划线处填入合适的代码。

a = input("请输入一个字符串:")
b = input("请输入另一个字符串:")
if len(a) < len(b):
    a, b = b, a
flag = False    # 初始化匹配标志为False
for i in range(len(a)):       # 遍历长字符串的所有可能起始位置
    p = i     # 初始化当前检查开始位置
     ①  
    for j in range(len(b)):   # 遍历短字符串的每个字符
        if b[j]==a[p%len(a)]:
            count+=1
            ②      # 移动到下一个位置
    if count==len(b):    # 如果完全匹配短字符串长度
        print("Yes")
         ③   
        break
if    ④  :
    print("No")
C++ 编辑器
输入
输出