测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A21833. 打卡考勤大明是学校Python编程社团的管理员,他用Python写了一个打卡考勤的程序,统计不同学生到信息技术教室编程打卡的次数以及未打卡的学生名单。这个程序可以一次输入已打卡学生姓名,用空格隔开,然后程序就会自动统计已打卡学生的名单和次数。如果有未打卡的学生,就输出未打卡的学生的名单,否则输出所有学生都已打卡。请你补全代码,实现上述功能。# 创建一个空列表来存储打卡的学生姓名 checked_…

填空题 困难

题目描述

打卡考勤

大明是学校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次
未打卡的学生名单:
猪八戒

参考答案

# 创建一个空列表来存储打卡的学生姓名 checked_in_list = [] students_input = input("请输入已打卡学生姓名,用空格隔开: ") # 将输入的学生姓名分割并添加到列表中 students = students_input.split() checked_in_list.extend(students) # 将列表转换为集合 checked_in_students = set(checked_in_list) # 创建一个集合存储所有学生总名单 all_students = {"唐僧", "孙悟空", "猪八戒", "沙和尚"} # 统计打卡的名单和次数 checked_count = {} for student in checked_in_students:     checked_count[student]=checked_in_list.count(student)      # 输出打卡的学生名单和次数 print("打卡的学生名单和次数:") for student, count in checked_count.items():     print(f"{student}: {count}次") # 找出未打卡的学生名单 not_checked_students = list(all_students - checked_in_students) # 输出未打卡的学生名单 if not_checked_students:     print("未打卡的学生名单:")     for student in not_checked_students:         print(student) else:     print("所有学生都已打卡。") ————————示例运行结果—————————— 请输入已打卡学生姓名,用空格隔开: 孙悟空 沙和尚 唐僧 唐僧 孙悟空 孙悟空     打卡的学生名单和次数: 唐僧: 2次 孙悟空: 3次 沙和尚: 1次 未打卡的学生名单: 猪八戒

答案解析

评分标准:

(1)extend(students) (或等效答案);(3分)

(2)set(checked_in_list) (或等效答案);(2分)

(3)student, count (或等效答案);(2分)

(4)all_students - checked_in_students 或 all_students.difference(checked_in_students) (或等效答案)。 (3分)

上一题 下一题