这个较为简单,自己都可以写 def total(): if os.path.exists(filename): with open(filename, 'r', encoding='utf-8') as rfile: student = rfile.readlines() if student: studentsum = len(student) print('总人数为{}'.format(studentsum)) else: print('还未录入学生信息') else: print('文件为空')
显示全部信息也比较简单
def show(): student_query = [] if os.path.exists(filename): with open(filename,'r',encoding='utf-8') as rfile: student=rfile.readlines() for item in student: d = dict(eval(item)) student_query.append(d) if student_query: show_student(student_query) else: print('文件为空,无法显示')
按成绩排序
def sort(): show() student_query=[] if os.path.exists(filename): with open(filename, 'r', encoding='utf-8') as rfile: student = rfile.readlines() for item in student: d = dict(eval(item)) student_query.append(d) choice = int(input('请输入你要排序的方式:0:升序/1:降序')) if choice == 0: flag = False # 标记是否删除 elif choice == 1: flag = True mode=int(input('请输入你需要排序的规则1:按英语成绩/2:按python成绩/3.按java成绩/4.按总成绩')) if mode==1: student_query.sort(key=lambda x:int(x['englist']),reverse=flag) # lambda函数用于定义表达式 elif mode==2: student_query.sort(key=lambda x:int(x['python']),reverse=flag) elif mode==3: student_query.sort(key=lambda x:int(x['java']),reverse=flag) elif mode==4: student_query.sort(key=lambda x:int(x['java'])+int(x['python'])+int(x['java']),reverse=flag) else: print('您输入有误') sort() show_student(student_query)
知识点:在排序中使用到sort函数sort(key,reserve)其中key代表排序的参数,reserve代表是否逆序
还使用到了lamdbda构造方法