软工博客10

python作业:
输入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_class = list(set(list(input())))
b_class = sorted(set(input().split()))
acm_students = sorted(set(input().split()))
english_students = sorted(set(input().split()))
transfer_student = input()

两个班级的所有人员数量

total_num = len(a_class)+len(b_class)
print('Total:', total_num)

既没有参加ACM,也没有参加English的名单和数量

not_in_race = sorted(list(set(a_class + b_class) - set(acm_students) - set(english_students)))
print('Not in race:', not_in_race, ', num:', len(not_in_race))

所有参加竞赛的人员的名单和数量

all_racers = sorted(list(set(acm_students) | set(english_students)))
print('All racers:', all_racers, ', num:', len(all_racers))

既参加了ACM,又参加了英语竞赛的所有人员及数量

acm_and_english = sorted(list(set(acm_students) & set(english_students)))
print('ACM + English:', acm_and_english, ', num:', len(acm_and_english))

参加了ACM,未参加英语竞赛的所有人员名单

only_acm = sorted(list(set(acm_students) - set(english_students)))
print('Only ACM:', only_acm)

参加英语竞赛,未参加ACM的所有人员名单

only_english = sorted(list(set(english_students) - set(acm_students)))
print('Only English:', only_english)

参加只参加ACM或只参加英语竞赛的人员名单

acm_or_english = sorted(list(set(only_acm) | set(only_english)))
print('ACM Or English:', acm_or_english)

转学操作

if transfer_student in a_class:
a_class.remove(transfer_student)
print(sorted(a_class + b_class))
elif transfer_student in b_class:
b_class.remove(transfer_student)
print(sorted(a_class + b_class))
else:
pass

posted @ 2025-03-16 10:47  Thanatos。syts  阅读(19)  评论(0)    收藏  举报