本文共 3935 字,大约阅读时间需要 13 分钟。
题目要求:
根据业务需求,现要对慕课学院(1)班的所有学员进行选修课程分配,使得每一名学生都可以选修到一门课程。具体要求如下:
1、自定义学生信息、课程信息、教师信息三者的具体描述
2、自定义example.py和file_exe.py模块,分别用以定义(1)中的描述信息和作为启动文件
3、启动文件中主要包含5个方法,包括星号(“*”)分割线设置、初始化课程信息并装载入列表返回、初始化教师信息并装载入列表返回、遍历课程对象并绑定教师至课程对象的对应属性并装载入列表返回、初始化学生信息并装载入列表返回
4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。
运行效果图:
example.py
class Student(object): """学生类""" def __init__(self,s_num,s_name): """ :param s_num: 学号 :param s_name: 学生姓名 :param s_course: 已选课程,默认列表为空 """ self.s_num = s_num self.s_name = s_name self.s_course = [] @property def course_detail(self): """以属性的方法返回学生的已选课程信息""" return self.s_course def add_course(self,cour_info): """实现添加课程信息至学生对象的已选课程属性""" self.s_course.append(cour_info) def __str__(self): """设置学生类信息的字符串显示方法""" return "name:{0},s_number:{1}".format(self.s_name,self.s_num)class Teacher(object): """教师类""" def __init__(self, t_num, t_name, t_phone): """ :param t_num: 教师编号 :param t_name: 教师姓名 :param t_phone: 手机号 """ self.t_num = t_num self.t_name = t_name self.t_phone = t_phone def __str__(self): """设置教师类信息的字符串显示方法""" return 't_number:{0},t_name:{1}'.format(self.t_num, self.t_name)class Course(object): def __init__(self,c_num,c_name,c_teacher = None): """ :param c_num: 课程编号 :param c_name: 课程名城 :param c_teacher: 授课教师,默认为None """ self.c_num = c_num self.c_name = c_name self.c_techer = c_teacher def binding(self,teacher): """绑定授课教师""" #如果实例不存在,返回0,反之,将该实例赋值给课程类的授课教师属性,并将课程名和教师名包装成字典进行返回 if teacher == "": return 0 else: self.c_techer = teacher return {"课程名称":self.c_name,"教师名称":self.c_techer.t_name}
file_exe.py
from example import Student,Teacher,Coursedef introduction(str): """标题 函数""" a = '*' * 22 print('{0}{1}{2}'.format(a,str,a))def prepare_course(): """创建课程信息初始化""" # 1.创建字典接受课程信息 dict1 = { "01": "网络爬虫", "02": "数据分析", "03": "人工智能", "04": "机器学习", "05": "云计算", "06": "大数据", "07": "图像识别", "08": "Web开发" } #2.船舰空列表 list1 = [] #3.循环遍历字典,将字典的键值对传入到课程的实例,列表则每次追加每次的课程类实例 for k,v in dict1.items(): rest = Course(k,v) list1.append(rest) #4.返回追加后的列表 return list1def create_teacher(): """创建教师信息初始化""" #1.列表保存教师信息 list_t = ["T1", "张亮", "13301122001"],["T2", "王朋", "13301122002"],\ ["T3", "李旭", "13301122003"],["T4", "黄国发", "13301122004"],\ ["T5", "周勤", "13301122005"],["T6", "谢富顺", "13301122006"], \ ["T7", "贾教师", "13301122007"],["T8", "杨教师", "13301122008"] #2。创建列表进行存储 list2 = [] #3.将8个教师信息一一传入教师类 for i in list_t: rest = Teacher(i[0],i[1],i[2]) list2.append(rest) #4.返回实例对象 return list2def course_to_teacher(): """课程与教师逐一绑定,每一课程信息绑定倒序的每一个老师信息""" list3 = [] ls_course = prepare_course() ls_teacher = create_teacher() for i in range(0,len(ls_course)): rest = ls_course[i].binding(ls_teacher[-(i+1)]) list3.append(rest) return list3def create_student(): """创建学生信息初始化""" #1.列表保存学生信息,并以变量保存 ls_student = ["小亮","小明","李红","小丽","Jone","小彤","小K","慕慕"] #2.学号列表 ls_s_num = list(range(1000,1008)) #3.创建空列表 list4 = [] #4.循环遍历学生信息长度,将学号与倒序的学生姓名传入到学生类的实例,列表则追加每次学生类的实例 for i in range(0,len(ls_student)): rest = Student(ls_s_num[i],ls_student[-(i+1)]) list4.append(rest) return list4if __name__ == "__main__": rest1 = course_to_teacher() rest2 = create_student() introduction("慕课学院(1)班学生信息") for i in rest2: print(i) introduction("慕课学院(1)班选课结果") #调用学生类中的函数添加课程 for i in range(0,len(rest1)): rest2[i].add_course(rest1[i]) for j in rest2: print("Name:{0},Selected:{1}".format(j.s_name,j.course_detail))
运行结果:
转载地址:http://bjmof.baihongyu.com/