2025年12月电子学会青少年软件编程(Python五级)等级考试试卷
操作/编程
五级
2025
2026-01-16 10:54:37
76次
一、编程题
打卡考勤
大明是学校Python编程社团的管理员,他用Python写了一个打卡考勤的程序,统计不同学生到信息技术教室编程打卡的次数以及未打卡的学生名单。这个程序可以一次输入已打卡学生姓名,用空格隔开,然后程序就会自动统计已打卡学生的名单和次数。如果有未打卡的学生,就输出未打卡的学生的名单,否则输出所有学生都已打卡。请你补全代码,实现上述功能。
# 创建一个空列表来存储打卡的学生姓名
checked_in_list = []
students_input = input("请输入已打卡学生姓名,用空格隔开: ")
# 将输入的学生姓名分割并添加到列表中
students = students_input.split()
checked_in_list. ①
# 将列表转换为集合
checked_in_students = ②
# 创建一个集合存储所有学生总名单
all_students = {"唐僧", "孙悟空", "猪八戒", "沙和尚"}
# 统计打卡的名单和次数
checked_count = {}
for student in checked_in_students:
checked_count[student]=checked_in_list.count(student)
# 输出打卡的学生名单和次数
print("打卡的学生名单和次数:")
for ③ in checked_count.items():
print(f"{student}: {count}次")
# 找出未打卡的学生名单
not_checked_students = list( ④ )
# 输出未打卡的学生名单
if not_checked_students:
print("未打卡的学生名单:")
for student in not_checked_students:
print(student)
else:
print("所有学生都已打卡。")————————示例运行结果——————————
请输入已打卡学生姓名,用空格隔开: 孙悟空 沙和尚 唐僧 唐僧 孙悟空 孙悟空
打卡的学生名单和次数:
唐僧: 2次
孙悟空: 3次
沙和尚: 1次
未打卡的学生名单:
猪八戒
【知识点】 电子学会Python五级
字符消消乐
有一个字符消消乐游戏。随机产生一串长度为n只包含数字“456”的字符串,如有连续相同的字符则进行消除,提示:字符“0”的 ASCII码值是十进制48。
如字符串“455655565”,其消除过程如下:
第一步:消除字符“5”后形成新字符串“4655565”;
第二步,消除字符“5”后形成新字符串“4665”;
第三步,消除字符“6”后形成新字符串“45”;
最后消除结束,结果为“45”。
实现上述功能的Python程序如下,请在划线处填入合适的代码。
import random
n=int(input("请输入字符串长度:"))
s=""
for i in range(n): #生成n个由“456”字符组成的字符串
m=random.randint(4,6)
s=s+chr(48+ ① )
print("字符串为:",s)
i=0
while i<len(s): #变量i存储连续相同字符的起始位置索引
r=i #变量r存储连续相同字符的末尾位置索引
while r<len(s)-1 and ② : #留意r值的范围,索引不能越界
r=r+1
if ③ : #当有2个及以上连续相同的字符,需要消除
s=s[:i]+ ④
⑤
else:
i=i+1
print("消除后,字符串为:",s) 【知识点】 电子学会Python五级
指令序列优化
在人工智能系统中,历史操作指令常以列表形式存储。为提高存储效率和确保数据不可变性,需将连续重复的指令分组成元组。例如指令序列 [5,5,5,2,2,3] 会被优化为 [(5,5,5), (2,2), (3,)]。给定一个由整数组成的列表,请将其转换为由元组构成的列表,每个元组包含原列表中连续相同的元素片段。按顺序输出所有分组后的元组。
例如:
输入:
5 5 5 2 2 3
输出:
(5,5,5),(2,2),(3,)
下面是小明编写的代码,请你将空白内容补充完整。
numbers_input = input("请输入一些用空格分隔的数字: ")
numbers = []
for num_str ① numbers_input.split():
numbers.append(int(num_str))
# 用于存储分组结果的列表
grouped_numbers = []
if len(numbers) == ② :
print("你没有输入任何数字。")
else:
current_group = [numbers[0]]
for i in range(1, len(numbers)):
if numbers[i] == numbers[ ③ ]:
current_group.append(numbers[i])
else:
grouped_numbers.append(tuple( ④ ))
current_group = [numbers[i]]
grouped_numbers.append(tuple(current_group))
output = ""
for group in grouped_numbers:
group_str = str(group)
if output == "":
output = group_str
else:
output = output + "," + ⑤
print(output) 【知识点】 电子学会Python五级
