python学习——set集合,sorted函数
题目:
输入a,b班的名单,并进行如下统计。
输入格式:
第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符。
第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有重复学生。
第3行::参加acm竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。
第4行:参加英语竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。
第5行:转学的人(只有1个人)。
输出格式
特别注意:输出人员名单的时候需调用sorted函数,如集合为x,则print(sorted(x))
输出两个班级的所有人员数量
输出两个班级中既没有参加ACM,也没有参加English的名单和数量
输出所有参加竞赛的人员的名单和数量
输出既参加了ACM,又参加了英语竞赛的所有人员及数量
输出参加了ACM,未参加英语竞赛的所有人员名单
输出参加英语竞赛,未参加ACM的所有人员名单
输出参加只参加ACM或只参加英语竞赛的人员名单
最后一行:一个同学要转学,首先需要判断该学生在哪个班级,然后更新该班级名单,并输出。如果没有在任何一班级,什么也不做。
输入样例:
abcdefghijab
1 2 3 4 5 6 7 8 9 10
1 2 3 a b c
1 5 10 a d e f
a
输出样例:
Total: 20
Not in race: ['4', '6', '7', '8', '9', 'g', 'h', 'i', 'j'], num: 9
All racers: ['1', '10', '2', '3', '5', 'a', 'b', 'c', 'd', 'e', 'f'], num: 11
ACM + English: ['1', 'a'], num: 2
Only ACM: ['2', '3', 'b', 'c']
Only English: ['10', '5', 'd', 'e', 'f']
ACM Or English: ['10', '2', '3', '5', 'b', 'c', 'd', 'e', 'f']
['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
代码:
a = input()
seta = set(a)
b = input()
setb = set(b.split()) # 通过切片操作消除空格
acm = input()
setacm = set(acm.split()) # 通过切片操作消除空格
english = input()
setenglish = set(english.split()) # 通过切片操作消除空格
zhuanxue = input()
Total = seta.union(setb) # 两班所有学生--并集
race = setacm.union(setenglish) #竞赛学生--并集
Nonrace = Total.difference(race) #非竞赛学生--返回集合的差集
ACMplusEnglish = setacm.intersection(setenglish) # 报名两项竞赛学生--返回集合的交集
OnlyACM = setacm.difference(setenglish) # 仅报ACM学生---差集
OnlyEnglish = setenglish.difference(setacm) # 仅报英语竞赛学生---差集
ACMOrEnglish = setacm.symmetric_difference(setenglish) # 报名一项竞赛---对称差集
print("Total:",len(seta.union(setb)))
print("Not in race:",sorted(Nonrace),end=", ")
print("num:",len(Nonrace))
print("All racers:",sorted(race),end=", ")
print("num:",len(race))
print("ACM + English:",sorted(ACMplusEnglish),end=", ")
print("num:",len(ACMplusEnglish))
print("Only ACM:",sorted(OnlyACM))
print("Only English:",sorted(OnlyEnglish))
print("ACM Or English:",sorted(ACMOrEnglish))
# 判断转学的学生
if zhuanxue in seta:
seta.remove(zhuanxue)
print(sorted(seta))
elif zhuanxue in setb:
setb.remove(zhuanxue)
print(sorted(setb))
总结:
1.了解了split可以通过切片消除掉空格
2.了解了set集合的几个函数:
1)union:表示并集
2)difference:表示差集
3)intersection:表示交集
4)symmetric_difference:表示对称差集(即两集合中除去交集的剩余部分的并集,个人理解)
3.sorted函数可以用来排序输出内容
标签:总结,5.3,ACM,学生,学习,竞赛,English,print,sorted From: https://www.cnblogs.com/clh628/p/17381070.html