# -*- coding:utf-8 -*- import random as rd import csv import pandas as pd FirstName = '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁' LastName = '豫章故郡洪都新府星分翼轸地接衡庐襟三江而带五湖郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜飞李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁' #二维字典定义 data_struc = {'structure': {'姓名': '', '性别': '', '学号': '', 'Python程序设计基础': '', '计算机导论': '', '离散数学': '', '数据结构': '', 'C语言程序设计': '', 'Java语言程序设计': '', '算法导论': '', '总分': ''}} #学生总字典定义 stuDic = {} stuList=[] stuList = stuDic.values() # 生成学生个人字典 def gennerateStu(i, name, sex, number, pythonMark, htmlMark, mathMark, dataMark, cMark, javaMark, methodMark): stuDic[i] = {} stuDic[i]['姓名'] = name stuDic[i]['性别'] = sex stuDic[i]['学号'] = number stuDic[i]['Python程序设计基础'] = pythonMark stuDic[i]['计算机导论'] = htmlMark stuDic[i]['离散数学'] = mathMark stuDic[i]['数据结构'] = dataMark stuDic[i]['C语言程序设计'] = cMark stuDic[i]['Java语言程序设计'] = javaMark stuDic[i]['算法导论'] = methodMark stuDic[i]['总分'] = round(stuDic[i]['Python程序设计基础'] + stuDic[i]['计算机导论'] + stuDic[i]['离散数学'] + stuDic[i]['数据结构'] + stuDic[i]['C语言程序设计'] + stuDic[i]['Java语言程序设计'] + stuDic[i]['算法导论'],1) #学生信息设置 def gennerator(): for i in range(60): xing = rd.choice(FirstName) ming = "".join(rd.choice(LastName) for i in range(2)) name = str(rd.choice(xing)) + str("".join(rd.choice(ming) for i in range(2))) sex = rd.choice("男女") number = i + 4201800 pythonMark = round(rd.uniform(74, 95), 1) htmlMark = round(rd.uniform(74, 95), 1) mathMark = round(rd.uniform(74, 95), 1) dataMark = round(rd.uniform(74, 95), 1) cMark = round(rd.uniform(74, 95), 1) javaMark = round(rd.uniform(74, 95), 1) methodMark = round(rd.uniform(74, 95), 1) gennerateStu(i, name, sex, number, pythonMark, htmlMark, mathMark, dataMark, cMark, javaMark, methodMark) # 写入csv def writeCSV(): with open("成绩表.csv", "w") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(stuDic[i]) def sortPythonMark(): python = sorted(stuList, key=lambda i:i['Python程序设计基础'], reverse = True) with open("Python 成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(python[i]) data = pd.read_csv("Python 成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["计算机导论"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Java语言程序设计"],axis=1) data6=data5.drop(["算法导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('Python 成绩降序表.csv', header=data_struc, index=False) def sortJavaMark(): java = sorted(stuList, key=lambda i:i['Java语言程序设计'], reverse = True) with open("Java 成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(java[i]) data = pd.read_csv("Java 成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["计算机导论"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Python程序设计基础"],axis=1) data6=data5.drop(["算法导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('Java 成绩降序表.csv', header=data_struc, index=False) def sortHTMLMark(): html = sorted(stuList, key=lambda i:i['计算机导论'], reverse = True) with open("计算机导论成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(html[i]) data = pd.read_csv("计算机导论成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["Python程序设计基础"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Java语言程序设计"],axis=1) data6=data5.drop(["算法导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('计算机导论成绩降序表.csv', header=data_struc, index=False) def sortMathMark(): Math = sorted(stuList, key=lambda i:i['离散数学'], reverse = True) with open("离散数学成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(Math[i]) data = pd.read_csv("离散数学成绩降序表.csv", encoding="utf-8") data1=data.drop(["计算机导论"],axis=1) data2=data1.drop(["Python程序设计基础"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Java语言程序设计"],axis=1) data6=data5.drop(["算法导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('离散数学成绩降序表.csv', header=data_struc, index=False) def sortDataMark(): Data = sorted(stuList, key=lambda i:i['数据结构'], reverse = True) with open("数据结构成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(Data[i]) data = pd.read_csv("数据结构成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["Java语言程序设计"],axis=1) data3=data2.drop(["计算机导论"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Python程序设计基础"],axis=1) data6=data5.drop(["算法导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('数据结构成绩降序表.csv', header=data_struc, index=False) def sortCMark(): C = sorted(stuList, key=lambda i:i['C语言程序设计'], reverse = True) with open("C语言成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(C[i]) data = pd.read_csv("C语言成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["Java语言程序设计"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["算法导论"],axis=1) data5=data4.drop(["Python程序设计基础"],axis=1) data6=data5.drop(["计算机导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('C语言成绩降序表.csv', header=data_struc, index=False) def sortMethMark(): Meth = sorted(stuList, key=lambda i:i['算法导论'], reverse = True) with open("算法导论成绩降序表.csv", "w", encoding="utf-8") as file: writer = csv.DictWriter(file, fieldnames=data_struc['structure'].keys()) writer.writeheader() for i in range(60): writer.writerow(Meth[i]) data = pd.read_csv("算法导论成绩降序表.csv", encoding="utf-8") data1=data.drop(["离散数学"],axis=1) data2=data1.drop(["Python程序设计基础"],axis=1) data3=data2.drop(["数据结构"],axis=1) data4=data3.drop(["C语言程序设计"],axis=1) data5=data4.drop(["Java语言程序设计"],axis=1) data6=data5.drop(["计算机导论"],axis=1) data7=data6.drop(["总分"],axis=1) data7.to_csv('算法导论成绩降序表.csv', header=data_struc, index=False) def main(): gennerator() writeCSV() sortPythonMark() sortJavaMark() sortHTMLMark() sortMathMark() sortDataMark() sortCMark() sortMethMark() if __name__ == '__main__': main()