Python 应聘者分类与排序算法 - 按总分、实践分降序,报名号升序排序
def classify(listT):
"""将应聘者分类"""
a = []
b = []
c = []
d = []
for applicant in listT:
practice_score = int(applicant[1])
written_score = int(applicant[2])
if practice_score >= 60 and written_score >= 60:
if practice_score >= 85 and written_score >= 85:
a.append(applicant)
elif practice_score >= 85 and written_score < 85:
b.append(applicant)
elif practice_score < 85 and written_score >= 85:
c.append(applicant)
else:
d.append(applicant)
return a, b, c, d
def admissionSort(a, b, c, d):
"""将四类应聘者按要求排序"""
admissionList = sorted(a, key=lambda x : (-(int(x[1])+int(x[2])),-int(x[1]),int(x[0])))
admissionList += sorted(b, key=lambda x : (-(int(x[1])+int(x[2])),-int(x[1]),int(x[0])))
admissionList += sorted(c, key=lambda x : (-(int(x[1])+int(x[2])),-int(x[1]),int(x[0])))
admissionList += sorted(d, key=lambda x : (-(int(x[1])+int(x[2])),-int(x[1]),int(x[0])))
return admissionList
def myPrintL(listA):
"""输出录取人数和按录取顺序排列的应聘者名单"""
print("上线人数", len(listA))
for j in listA:
print(" ".join(j))
def main():
listA = getdata() # 获取原始数据
a, b, c, d = classify(listA)
admissionList = admissionSort(a, b, c, d) # 生成录取顺序名单
myPrintL(admissionList)
main()
原文地址: https://www.cveoy.top/t/topic/pOGu 著作权归作者所有。请勿转载和采集!