"""
業務要求:
1、自定義學生信息、課程信息、老師信息三者的具體描述
2、自定義example.py和file_exe.py模塊,分別用以定義(1)中的描述信息和作爲啓動文件
3、啓動文件中主要包含5個方法,包括星號(“*”)分割線設置、初始化課程信息並裝載入列表返回、初始化老師信息並裝載入列表返回、遍歷課程對象並綁定老師至課程對象的對應屬性並裝載入列表返回、初始化學生信息並裝載入列表返回
4、啓動文件中利用‘__main__'魔法屬性實現(3)中定義方法的調用,並遍歷所返回的學生;對象列表以添加課程至學生對象的屬性
效果:
**********學生信息*********
name:Harold,s_number:1000
name:Jim,s_number:1001
**********選課結果*********
name:Harold,Selected:[{'課程名稱':'網絡爬蟲','教師名稱':'楊老師'}]
name:Jim,Selected:[{'課程名稱':'大數據','教師名稱':'李老師'}]
詳細設計:
1、學生類:
類型描述:能夠描述學生的學號、姓名、已選課程(列表)三項信息,要求:
1)設定方法以循環遍歷打印學生的已選課程信息
2)設定方法以屬性的方式返回學生的已選課程信息
3)設定方法實現添加課程信息至學生對象的已選課程屬性
4)正確設置學生類信息的字符串顯示顯示方法,實現學生學號與學生姓名的顯示
2、老師類:
類型描述:能夠描述老師編號、老師姓名、手機號三項信息,要求:
1)正確設置老師類信息的字符串顯示顯示方法,實現老師編號與老師姓名的顯示
3、課程類:
類型描述:能夠描述課程編號、課程名稱、授課老師(默認爲None),要求:
1)設定方法實現課程綁定授課老師功能,並將課程名稱和老師名稱包裝成字典進行返回
實現功能:
1、自定義星號分割顯示的方法
2、自定義課程信息初始化的方法,並以列表形式返回所創建的8門課程對象
3、自定義老師信息初始化方法,並以列表形式返回所創建的8名老師對象
4、自定義課程與老師逐一綁定的方法,並以列表形式返回所有課程與老師綁定的結果
5、自定義學生對象初始化的方法,並以列表形式返回所創建的8名學生對象,其中學號範圍爲1000~1007
6、根據'__name__ == __main__'魔法屬性,實現上述方法調用,並調整展示效果
"""
course_selection_system_example.py
#!/usr/bin/env python3 # coding=utf-8 # Version:python3.6.1 # Project:practice # File:course_selection_system_example.py # Data:2020/7/23 14:32 # Author:LGSP_Harold class Student(object): def __init__(self, s_no, s_name, course=[]): self.s_no = s_no self.s_name = s_name self.course = course @property def course_detail(self): return self.course def add_course(self, course_info): self.course = course_info def __str__(self): return 'name:{0},s_number:{1}'.format(self.s_name, self.s_no) class Teacher(object): def __init__(self, t_no, t_name, t_phone): self.t_name = t_name self.t_phone = t_phone self.t_no = t_no def __str__(self): return 'name:{0},t_number{1}'.format(self.t_name, self.no) class Course(object): def __init__(self, c_no, c_name, teacher=None): self.c_name = c_name self.c_no = c_no self.teacher = teacher def binding(self, teacher): if not teacher: return None self.teacher = teacher course_dict = {'課程名稱': self.c_name, '教師名稱': self.teacher.t_name} return course_dict
course_selection_system_file_exe.py
#!/usr/bin/env python3 # coding=utf-8 # Version:python3.6.1 # Project:practice # File:course_selection_system_file_exe.py # Data:2020/7/23 14:32 # Author:LGSP_Harold from course_selection_system_example import Course, Teacher, Student def introduction(title): print('{0}{1}{0}'.format('*' * 9, title)) def init_course(): course_dict = {'01': '網絡爬蟲', '02': '數據分析', '03': '人工智能', '04': '機器學習', '05': '雲計算', '06': '大數據', '07': '圖像識別', '08': 'Web開發'} course_list = [] for k, v in course_dict.items(): t = Course(k, v) course_list.append(t) return course_list def init_teacher(): t1 = Teacher('T1', 'aa', '13131313131') t2 = Teacher('T2', 'qq', '13131313132') t3 = Teacher('T3', 'ww', '13131313133') t4 = Teacher('T4', 'dd', '13131313134') t5 = Teacher('T5', 'ff', '13131313135') t6 = Teacher('T6', 'gg', '13131313136') t7 = Teacher('T7', 'hh', '13131313137') t8 = Teacher('T8', 'bb', '13131313138') t_list = [t1, t2, t3, t4, t5, t6, t7] return t_list def course_to_teacher(): bd_list = [] ls_course = init_course() ls_teacher = init_teacher() for n in range(len(ls_course)): # dic = ls_course[n].binding(ls_teacher[len(ls_course) - 1 - n]) try: dic = ls_course[n].binding(ls_teacher[n]) except IndexError: dic = ls_course[n].binding('') # print('dic_', dic) bd_list.append(dic) return bd_list def init_student(): ls_student = ['pp', 'll', 'ii','uu', 'mm', 'nn', 'yy', 'hh'] s_number = [s_num for s_num in range(1000, 1008)] stu_list = [] for n in range(len(ls_student)): # st = Student(s_number[n], ls_student[len(ls_student) - 1 - n]) st = Student(s_number[n], ls_student[n]) stu_list.append(st) return stu_list if __name__ == '__main__': t_course = course_to_teacher() student = init_student() introduction('學生信息') for s in student: print(s) introduction('選課結果') for i in range(len(t_course)): student[i].add_course(t_course[i]) for stu in student: print('Name:{0}, Selected:[{1}]'.format(stu.s_name, stu.course_detail))