类型:列表元组
一、描述
文件“schoolCode.csv”和“MajorCode.csv”中的数据是每个学院的编号和专业的编号,“studentList.csv”文件中有若干学生信息,学生出现的顺序是他在班级中排名顺序,每行中的数据用逗号分隔,各数据依顺代表:
学生姓名,学生性别,学院,专业名称,行政班(专业加班级号,例如经济1901),入学年级。
假如本科的学生层次编号为012,请为“studentList.csv”中的数据增加学号,学号创建规则是:
学生层次+入学年份后两位+学院代码+专业代码+班级号+班中排名。
例如:012171985170110 表示本科生、2017年入学、文法学院、 编辑出版专业、1701班、排名为10的同学
输入格式说明
第一行输入学生姓名
第二行输入班级
输出格式说明
第一行输出该学生的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
其后分行输出该班级所有同学的学号、学生姓名、学生性别、学院、专业名称、行政班、入学年级信息,各项之间空格分隔
示例 1
输入:
段宁
金融gj1701
输出:
012142172140101 段宁 女 国际学院 金融 金融gj1401 2014
012172172170101 罗愚 女 国际学院 金融 金融gj1701 2017
012172172170102 卢佳 女 国际学院 金融 金融gj1701 2017
012172172170103 张郁 女 国际学院 金融 金融gj1701 2017
二、代码实现:
# -------- ------- --------
# @Author : 赵广辉
# @Contact: vasp@qq.com
# @Company: 武汉理工大学
# @Version: 1.0
# @Modify : 2022/06/13 11:33
# Python程序设计基础,赵广辉,高等教育出版社,2021
# Python程序设计基础实践教程,赵广辉,高等教育出版社,2021
# -------- ------- --------####### BEGIN HELPER FUNCTIONS ####################
# read_file()函数帮助你读取文件到列表,直接调用就可以,此段不需修改
def read_file(filename):"""接收一个文件名为参数,数据类型为字符串类型,文件编码为utf-8,返回值为列表,列表元素为将文件每一行根据逗号切分成的列表"""with open(filename, 'r', encoding='utf-8') as file: file_to_list = [line.strip().split(',') for line in file]
# 文件全部内容读取出来放入列表中,每个元素为一行字符串return file_to_list # 以列表形式返回文件中的数据
####### END HELPER FUNCTIONS ####################def student_id(ls_student, ls_school, ls_major): """参数为三个文件对象,依序分别由读学生信息、学院信息和专业信息文件获得。返回值为列表,为包含了新生成的学号的学生信息列表。"""student_detail = []ID = 1dic = {}for item in ls_student:s = '012's += item[-1][-2:]dic[item[-2]] = dic.get(item[-2], 0) + 1for i in ls_school:if item[2]==i[0]:s += i[1]breakfor i in ls_major:if item[3]==i[0]:s += i[1]breaks += item[4][-4:]if dic[item[-2]]<10:s += '0's += str(dic[item[-2]])ls = [s]for i in item:ls.append(i)student_detail.append(ls)# =============================== ## 此处按文档注释要求补充你的代码# =============================== #return student_detail # 返回加了学号的学生信息列表def student_info(stu_name, ls_student):"""参数为学生名字字符串和学生的信息列表,返回值为该学生的详细信息"""for item in ls_student:if stu_name==item[1]:return item"""参数为学生班级和学生信息列表,返回值为同班同学的信息列表"""# =============================== ## 此处按文档注释要求补充你的代码# =============================== #
def classmate(stu_class, ls_student):"""参数为学生班级和学生信息列表,返回值为同班同学的信息列表"""mate_ls = []for item in ls_student:if stu_class==item[-2]:mate_ls.append(item)# =============================== ## 此处按文档注释要求补充你的代码# =============================== #return mate_lsif __name__ == '__main__':stuName = input() # 输入学生姓名stuClass = input() # 输入班级student_list = read_file('studentList.csv')[1:] # 获得学生信息列表school_code = read_file('schoolCode.csv') # 获得学院信息列表major_code = read_file('MajorCode.csv') # 获得专业信息列表studentDetail = student_id(student_list, school_code, major_code) # 调用函数计算ID并插入到列表中print(*student_info(stuName, studentDetail)) # 输出学生信息ls_classmate = classmate(stuClass, studentDetail) # 返回同班同学信息列表for classmate in ls_classmate: # 逐个输出同学信息print(*classmate)