博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python类的实践项目
阅读量:2047 次
发布时间:2019-04-28

本文共 3935 字,大约阅读时间需要 13 分钟。

题目要求:

根据业务需求,现要对慕课学院(1)班的所有学员进行选修课程分配,使得每一名学生都可以选修到一门课程。具体要求如下:

    1、自定义学生信息、课程信息、教师信息三者的具体描述

    2、自定义example.py和file_exe.py模块,分别用以定义(1)中的描述信息和作为启动文件

    3、启动文件中主要包含5个方法,包括星号(“*”)分割线设置、初始化课程信息并装载入列表返回、初始化教师信息并装载入列表返回、遍历课程对象并绑定教师至课程对象的对应属性并装载入列表返回、初始化学生信息并装载入列表返回

    4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。

运行效果图:

//img.mukewang.com/climg/5c7752810001456705000290.jpg

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/

你可能感兴趣的文章
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
被废弃的dispatch_get_current_queue
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>