大学录取名单- 低难度版本
写一个函数,实现帮一所大学录取考生,要求如下:
- 函数的参数包括以下变量;
大学名称、专业、招生分数线、招生老师名单、报考考生及其高考成绩 - 需要永达本讲所有的参数形式
- 给函数传参,运行后,需要输出如下信息:
大学名称、专业、招生分数线、招生人数、招生老师名单、报考考生及其高考成绩、报考人数、达线人数、录取名单、录取人数
def admission_list(university,major,pass_score=550,*args,**kwargs):
print('大学名称:',university)
print('专业:',major)
print('招生分数线:',pass_score,type(pass_score))
print('招生老师:',args)
print('考生及成绩:',kwargs)
print('报考人数:',len(kwargs))
# 达线
reach_line = {}
for student,score in kwargs.items():
if score > int(pass_score):
reach_line.setdefault(student,score)
print('达线人数:',len(reach_line))
print('录取名单:',reach_line)
admission_list('南昌大学','通信工程',550,'李老师','张老师',张三=590,李四=540,王五=600,赵柳=580)
大学名称: 南昌大学
专业: 通信工程
招生分数线: 550 <class 'int'>
招生老师: ('李老师', '张老师')
考生及成绩: {'张三': 590, '李四': 540, '王五': 600, '赵柳': 580}
报考人数: 4
达线人数: 3
录取名单: {'张三': 590, '王五': 600, '赵柳': 580}
大学录取名单- 高难度版本
写一个函数,实现帮一所大学录取考生,要求如下:
- 函数的参数包括以下变量;
大学名称、专业、招生分数线、招生人数、招生老师名单、报考考生及其高考成绩 - 需要永达本讲所有的参数形式
- 给函数传参,运行后,需要输出如下信息:
大学名称、专业、招生分数线、招生人数、招生老师名单、报考考生及其高考成绩、报考人数、达线人数、录取名单(分数由高到低排序)、录取人数
#
pass_score_dic = {} # 过分数线名单
pass_list = [] # 最终录取名单
def enroll_list(university,major,pass_score=550,pass_count=10,*args,**kwargs):
'''
函数参数说明:
# university 大学名称 ***** 关键字参数
# major 专业 ***** 关键字参数
# pass_score 招生分数线 ***** 默认参数
# pass_count 招生人数 ***** 默参
# args 招生老师名单 ***** 可变参数- 不确定数量
# kwargs 报考考生及其高考成绩 ***** 可变关键字 - 不确定考生名字和成绩
'''
global pass_score_dic,pass_list # 注意这里! 全局变量的引用!
if len(kwargs)>0: # 首先要判断是否有报考的考生 这个是第一判断,没有报考人,那么以下任何逻辑没有意义
for stu,score in kwargs.items(): # 把考生和分数先分开 dict的items key和values
if int(score)>pass_score: # 判断是否高于录取分数(达到录取分数才要)
pass_score_dic[stu] = int(score) # 操作列表的添加 # 特别注意对全局的操作 可变类型添加无需global
# 对已经过分数线的同学按照分数进行高低排序
dic_desc = sorted(pass_score_dic.items(),key = lambda k:k[1], reverse = True)
print('**演示输出排序输出**:',dic_desc,'\n') # 注意这里返回的结构[a:1,c:2]-->[(a,1),(c,2)]
# 设定取值的量 切片
for stu_pass in dic_desc[0:pass_count]: # 特别注意这里高数系统,我要提取多少个人出来,pass_count是我们录取的总量
pass_list.append(stu_pass) # 符合录取条件的前X名同学进入最终录取名单
print(f'学校:{university}\n专业:{major}\n录取分数线:{pass_score}\n招生人数:{pass_count}\n招生老师:{args}\n考生名单及分数:{kwargs}')
print(f'报考人数:{len(kwargs)}\n达线人数:{len(pass_score_dic)}\n录取名单(由高到低):{dict(pass_list)}\n录取人数:{len(pass_list)}')
else:
print('没有人报考')
enroll_list('南昌大学','通信工程',550,2,'李老师','张老师',张三=590,李四=540,王五=600,赵柳=580)
演示输出排序输出: [('王五', 600), ('张三', 590), ('赵柳', 580)]
学校:南昌大学
专业:通信工程
录取分数线:550
招生人数:2
招生老师:('李老师', '张老师')
考生名单及分数:{'张三': 590, '李四': 540, '王五': 600, '赵柳': 580}
报考人数:4
达线人数:3
录取名单(由高到低):{'王五': 600, '张三': 590}
录取人数:2