2025年6月电子学会青少年软件编程(Python五级)等级考试试卷
操作/编程
五级
2025
2025-07-24 10:17:45
72次
一、编程题
字符串循环移位
字符串的循环移位过程是将字符串的第一个字符移动到末尾形成新的字符串,例如,现有一个字符串"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") 【知识点】 电子学会Python五级
购物车系统
派森同学用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
【知识点】 电子学会Python五级
传感器采集数据
在人工智能的多模态数据处理中,不同传感器采集的特征数据需要融合。每个传感器用唯一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}") 【知识点】 电子学会Python五级
