类型:列表元组
描述
文件“schoolCode.csv”和“MajorCode.csv”中的数据是每个学院的编号和专业的编号,“studentList.csv”文件中有若干学生信息,学生出现的顺序是他在班级中排名顺序,每行中的数据用逗号分隔,各数据依顺代表:
学生姓名,学生性别,学院,专业名称,行政班(专业加班级号,例如经济1901),入学年级。
假如本科的学生层次编号为012,请为“studentList.csv”中的数据增加学号,学号创建规则是:
学生层次+入学年份后两位+学院代码+专业代码+班级号+班中排名。
例如:012171985170110 表示本科生、2017年入学、文法学院、 编辑出版专业、1701班、排名为10的同学
输入格式说明
第一行输入学生姓名
第二行输入班级
输出格式说明
第一行输出该学生的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
其后分行输出该班级所有同学的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
def readFile(filename): #读取文件返回列表
file = open(filename,"r")
ls = list(line.strip().split(',') for line in file)
file.close()
return ls
def studentID(lsStudent,lsSchool,lsMajor):#生成学生学号
dicSchool = { x[0]:x[1] for x in lsSchool}
dicMajor = {x[0]: x[1] for x in lsMajor}
detail = []
for student in lsStudent:
id = '012'
id = id + student[5][2:] + dicSchool[student[2]] + dicMajor[student[3]] + student[4][-4:]
id = id + '{0:0>2}'.format([x[0] for x in lsStudent if student[4] == x[4]].index(student[0]) + 1)
detail.append([id] + student)
return detail
def info(stuName,lsStudent): #查找学生信息
info = [info for info in lsStudent if info[1] == stuName][0]
return info
def classmate(stuClass,lsStudent): #查找班级同学
classmate = [info for info in lsStudent if info[5] == stuClass]
return classmate
stuName = input()
stuClass = input()
studentList = 'studentList.csv'
schoolCode = 'schoolCode.csv'
MajorCode = 'MajorCode.csv'
lsStudent = readFile(studentList)
lsSchool = readFile(schoolCode)
lsMajor = readFile(MajorCode)
studentDetail = studentID(lsStudent, lsSchool, lsMajor)
print(*info(stuName,studentDetail))
lsclassmate = classmate(stuClass,studentDetail)
for classmate in lsclassmate:
print(*classmate)