【问题描述】现有保存在字典中的选修课名单如下course={"茶艺":{'王朋','黄立明','任诗诗'},"摄影":{'刘山彬','张红','李珂','黄立明','王朋'},"广告设计":{'任诗诗','黄立明','刘山彬'}},假设所有学生姓名都不同,请输出选修了所有选修课的同学名单。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
输出结果:0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
{'黄立明'}0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【题前思考】0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
根据问题描述,填写表4-3-5。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表4-3-5 问题分析0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【解题思路】0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
每一门选修课信息包含课程名称和学生名单两项信息{课程:××,××,××},可以使用字典来存储选修课信息,字典的键是课程名称,值是学生名单,因为学生姓名不重复,因此可以使用集合来保存选修课的学生名单。选修了所有课程的学生名单,其实就是所有课程选修名单的交集。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【程序代码】0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【代码分析】0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
①:course存放的是三门课程的信息,如图4-3-2所示。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
图4-3-2 course字典信息0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
②:将字典的第一个key(键)的values(值)加入列表res中,即将选择了茶艺的学生名单保存在变量res中。其目的是与后面选修了其他课程的学生信息做交运算。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
③:对每一个课程的选修课名单执行循环体中的操作。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
④:取res与a的交集作为res的值。res的运算过程见表4-3-6。0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表4-3-6 res的运算过程0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
0qR100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库