今天学习了python的使用,认真学习并掌握了python中set函数和f‘’的用法。
一下是涉及到的题目和代码:
输入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或只参加英语竞赛的人员名单
最后一行:一个同学要转学,首先需要判断该学生在哪个班级,然后更新该班级名单,并输出。如果没有在任何一班级,什么也不做。
a=set(input())标签:输出,set,ACM,2023.3,acm,print,sorted From: https://www.cnblogs.com/zhanshuang/p/17185423.html
b=set(input().split())
acm=set(input().split())
eng=set(input().split())
zhuanxue=input()
add=a|b
all_racers=acm|eng
none_race=(a|b)-acm-eng
all_in=acm & eng
only_acm=all_racers-all_in-eng
only_eng=all_racers-all_in-acm
only_one=(acm-all_in)|(eng-all_in)
print('Total:',len(a)+len(b))
print(f'Not in race:{sorted(none_race)},num:{len(none_race)}')
print(f'All racers:{sorted(all_racers)},num:{len(all_racers)}')
print(f'ACM + English:{sorted(all_in)},num:{len(all_in)}')
print(f'Only ACM:{sorted(only_acm)}')
print(f'Only English:{sorted(only_eng)}')
print(f'ACM Or English:{sorted(only_one)}')
for i in a.copy():
if zhuanxue in a.copy():
a.remove(zhuanxue)
print(sorted(a))
for i in b.copy():
if zhuanxue in b.copy():
b.remove(zhuanxue)
print(sorted(b))
关于前两问的统计人数,在包含重复的情况下,我们如何做到避免重复数据重复统计呢,可以试试set函数输入,会自动保存为一个无序的无重复的集合函数。然后只需要使用len函数输出set函数的长度,就得到了参赛的人数啦。
set函数的差和交集和合集,我留到明天再继续讲解。