求助一个Python问题,用字典与集合的知识解下面这个题,感谢大佬帮忙🙏?

 我来答
jjdsjeff
2019-12-07 · TA获得超过2051个赞
知道大有可为答主
回答量:2468
采纳率:72%
帮助的人:591万
展开全部

course1 = set(('李雷', '张玉', '王晓刚', '陈红静', '方向', '司马清'))

course2 = set(('施然', '李芳芳', '刘潇', '方向', '孙一航', '黄煌'))

course3 = set(('陈红静', '方向', '刘培良', '张玉', '施小冉', '司马清'))

d={}

data=[x for y in [course1,course2,course3]

for x in y]for x in data:

if x in d:

d[x]+=1

else:

d[x]=1

print(d,'\n')

print('这个班还有 %d 学生没有选课(by set)' % (25-len(course1|course2|course3)))

print('这个班还有 %d 学生没有选课(by dict)' % (25-len(d)))

print('有 %d 位学生同时选修了2门课' % list(d.values()).count(2))

print('有 %d 位学生同时选修了3门课' % list(d.values()).count(3))

print('有 %d 位学生同时选修了1门课' % list(d.values()).count(1))

百度网友023b1c3
科技发烧友

2019-12-07 · 智能家居/数码/手机/智能家电产品都懂点
知道小有建树答主
回答量:1086
采纳率:84%
帮助的人:274万
展开全部
#根据课程名定义三个集合,course1,course2,course3
course1 = set(('李雷', '张玉', '王晓刚', '陈红静', '方向', '司马清'))
course2 = set(('施然', '李芳芳', '刘潇', '方向', '孙一航', '黄煌'))
course3 = set(('陈红静', '方向', '刘培良', '张玉', '施小冉', '司马清'))
#使用集合的union函数对3个集合元素进行去重整合,得到1个人员没有重复的集合choose_courses_person
choose_courses_person = course1.union(course2,course3)
#总人数为25人,所以用25减去choose_courses_person的长度就是没有选课的人数
not_choose_num = 25-len(choose_courses_person)
print("没有选课的同学有{}人".format(not_choose_num))
#定义3个空列表,用来存放选1门课,2门课,3门课的人员(根据标题说的数据类型没有列表,这里也可以使用空集合,如course_one=set(),后面的append方法改为add)
course_one = []
course_two = []
course_three = []
#num用来存放下面for循环中每个person到底选了几门课
num = 0
for person in choose_courses_person:
if person in course1:
num +=1
if person in course2:
num +=1
if person in course3:
num +=1
if num == 1:
course_one.append(person)
if num ==2:
course_two.append(person)
if num ==3:
course_three.append(person)
#每个person执行后要将num清零,这样不会影响下个person
num = 0
print("有{}个学生修选了1门课,他们是: {}".format(len(course_one), ','.join(course_one)))
print("有{}个学生修选了2门课,他们是: {}".format(len(course_two), ','.join(course_two)))
print("有{}个学生修选了3门课,他们是: {}".format(len(course_three), ','.join(course_three)))
把上面的内容放到.py文件中,给执行权限,运行后结果为:
没有选课的同学有12人
有9个学生修选了1门课,他们是: 施然,刘潇,孙一航,李芳芳,施小冉,刘培良,黄煌,李雷,王晓刚
有3个学生修选了2门课,他们是: 张玉,司马清,陈红静
有1个学生修选了3门课,他们是: 方向
****.上面写的这个有些地方可能不太符合题目要求,希望能有所帮助吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宿舍总动员

2019-12-09 · TA获得超过8372个赞
知道大有可为答主
回答量:1.3万
采纳率:71%
帮助的人:1893万
展开全部
已知信息可以用字典表示:
d={"lesson1":[""],"lesson2":[],"lesson3":[]}
[]列表中分别是课程123中的报名的同学的名字
问题1:这个字典d中lesson123的元素合并去重后就是所有报名的同学人数n,25-n就是答案

问题2:计算有多少的元素in d["lesson1"]\d["lesson2"]\d["lesson3"]中的两个
问题3:计算有多少的元素in d["lesson1"]\d["lesson2"]\d["lesson3"]中的三个
问题4:计算有多少的元素in d["lesson1"]\d["lesson2"]\d["lesson3"]中的一个,未重复报名
希望我的回答对你有帮助,你的采纳就是最好的鼓励~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NE_Z
2020-01-09 · TA获得超过1736个赞
知道小有建树答主
回答量:1687
采纳率:55%
帮助的人:571万
展开全部
people=['李雷', '张玉', '王晓刚', '陈红静', '方向', '司马清','施然', '李芳芳', '刘潇', '方向', '孙一航', '黄煌','陈红静', '方向', '刘培良', '张玉', '施小冉', '司马清']
newdic={}
for i in people:
if newdic.get(i):
newdic[i]+=1
else:
newdic[i]=1
print(25-len(set(people))) #没选课人数
循环newdic,key是人名,value是课程数量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
D陌羽辰零邸
2019-12-06 · 贡献了超过3708个回答
知道答主
回答量:3708
采纳率:0%
帮助的人:235万
展开全部
不可以,没有磁条说明你没有购买学生票的条件,即便你购买了学生票,但开始需要补全票价的。具体规定条件你可以看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式