写一个分组程序,按照学号,
学号除以5余数是1的,分到一组;
学号除以5余数是2的,分到二组;
学号除以5余数是3的,分到三组;
学号除以5余数是4的,分到四组;
学号除以5余数是0的,分到五组;
最后输出5个文件,分别是group1.txt, group2.txt, group3.txt, group4.txt, group5.txt,里面分别存放相应组的学生姓名和学号。
注意:请考虑使用reduce函数完成分组功能,reduce输出可以是字典结构的数据,比如:{‘五组’:[‘刘熊畅 04171185’,], ‘四组’:[‘赵颖 04171189’, ’段钰莹 07172669’, ‘关敬一05171524’], ‘四组’:[]}
from functools import reduce
f = open("names.txt",'r',encoding = "utf-8")
def fenzu(zi,str_2):
lis_2 = str_2.split()
num = list(lis_2[1])
kk = eval(num[-1]) % 5
if kk == 1:
zi['一组'].append(str_2)
elif kk == 2:
zi['二组'].append(str_2)
elif kk == 3:
zi['三组'].append(str_2)
elif kk == 4:
zi['四组'].append(str_2)
else:
zi['五组'].append(str_2)
return zi
ss = f.readlines()
f.close()
res = reduce(fenzu,ss,dict(zip(('五组','四组','三组','二组','一组'),([],[],[],[],[]))))
f1 = open('group1.txt','w')
f2 = open('group2.txt','w')
f3 = open('group3.txt','w')
f4 = open('group4.txt','w')
f5 = open('group5.txt','w')
f1.write(''.join(res['一组']))
f1.close()
f2.write(''.join(res['二组']))
f2.close()
f3.write(''.join(res['三组']))
f3.close()
f4.write(''.join(res['四组']))
f4.close()
f5.write(''.join(res['五组']))
f5.close()