Python -练习6

来源:互联网 发布:淘宝店被投诉知识产权 编辑:程序博客网 时间:2024/06/05 05:42

python编程练习题

1. 通过面向对象的方式实现队列和栈的数据结构

解答:
队列

#!/usr/bin/env python#coding:utf-8"""file:.pydate:2017/9/12 18:46author:    peakdescription:"""class Queue(object):    def __init__(self):        print 'create queue '        self.queue = []    def Inqueue(self,item):        self.queue.append(item)    def Outqueue(self):        if not self.queue == []:            return self.queue.pop()        else:            return None    def show(self):        for i in self.queue:            print i,        print    def lenth(self):        return len(self.queue)    def isempty(self):        return self.queue == []p1=Queue()print p1.isempty()p1.Inqueue(1)p1.show()p1.Inqueue(3)p1.show()print p1.lenth()p1.Outqueue()p1.show()

运行结果:
这里写图片描述

栈:
解答:

#!/usr/bin/env python#coding:utf-8"""file:.pydate:2017/9/12 21:37author:    peakdescription:"""#定义一个栈的类class stack(object):    def __init__(self):        print 'stack is created'        self.stack = []    def push(self,item):        self.stack.append(item)    def pop(self):        self.stack.pop()    def show(self):        for i in self.stack :            print i ,        print    def top(self):        if self.stack==[] :            return None        else:            print self.stack[-1]    def isempty(self):        return self.stack == []#调用上面的类s = stack()print s.isempty()s.push(1)s.push(2)s.push(3)s.show()s.pop()s.show()

运行结果:
这里写图片描述

2.构建一个管理系统

  • 管理系统雏形

redhat :学校,学员,讲师
学校:
属性:名称,地点,校训
方法:招生,招聘讲师

学员:
属性:姓名, 年龄, 性别,班级,学号
方法:学习,交钱,显示信息

讲师
属性:姓名, 年龄, 性别, 课程, 工资
方法:讲课,显示信息

学员保存在字典里,讲师保存在字典

  • 解答
#!/usr/bin/env python#coding:utf-8"""file:.pydate:2017/9/12 21:09author:    peakdescription:"""# 选课系统import sysimport jsonclass School(object):  # 创建学校类    def __init__(self, school_name, address):        self.school_name = school_name        self.address = address    def create_class(self):  # 创建班级        print("欢迎创建班级".center(50, '-'))        classroom_name = raw_input("请输入班级名称:")        classroom_period = raw_input("请输入班级周期:")        classroom_obj = Classroom(classroom_name, classroom_period, choice_school_obj.school_name)  # 班级的实例        print("班级成功创建,班级信息如下".center(50, '-'))        classrooms[classroom_name] = classroom_obj  # 将班级名与班级对象相关联        classroom_obj.show_classroom_info()    def hire_teacher(self):  # 雇讲师        print("欢迎雇用讲师".center(50, '-'))        # print("已有讲师Name:%s, Course:%s, Classroom:%s")        teacher_name = raw_input("请输入讲师名字:")        teacher_sex = raw_input("请输入讲师性别:")        teacher_age = input("请输入讲师年龄:")        teacher_course = raw_input("请输入讲师对应课程:")        teacher_classroom = raw_input("请输入讲师对应班级:")        teacher = Teacher(teacher_name, teacher_sex, teacher_age, teacher_course,                          teacher_classroom, choice_school_obj.school_name)  # 实例化讲师对象        teacher_dict = {"teacher_shcool_name": teacher.teacher_school_name, "teacher_sex": teacher_sex,                        "teacher_age": teacher_age, "teacher_course": teacher_course,                        "teacher_classroom": teacher_classroom}  # 用字典来存放讲师信息        teacher.show_teacher_info()        # 通过json将讲师的字典反序列化到dic字典中        if not dic:  # 字典如果为空            dic[teacher_name] = teacher_dict  # 将讲师名与讲师对象相关联            # 通过json将讲师的字典序列化到teacher_文件中            json.dump(dic, open("teacher_db", "w", encoding='utf-8'),                      ensure_ascii=False, indent=2)        else:  # 如果文件中已有讲师信息            if dic.get(teacher_name):  # 字典中不存在key,则返回none,不曝错                print("%s讲师已存在,不能创建名字相同的讲师" % teacher_name)                flag = True            elif not dic.get(teacher_name):                dic[teacher_name] = teacher_dict                json.dump(dic, open("teacher_db", "w", encoding='utf-8'), ensure_ascii=False, indent=2)    def create_course(self):  # 创建课程        print("迎欢创建课程".center(50, '-'))        course_type = raw_input("请输入课程类型[eg:技术/教育/自然科学/艺术...]:")        course_name = raw_input("请输入课程名称:")        course_price = raw_input("请输入课程价格:")        course_period = raw_input("请输入课程周期:")        course = Course(course_type, course_name, course_price, course_period, choice_school_obj.school_name)        print("课程成功创建,课程信息如下".center(50, '-'))        courses_dict[course_name] = course  # 将课程名与课程对象相关联        course.show_course_info()class Course(object):  # 课程类    def __init__(self, course_type, course_name, course_price, course_period, course_place):        self.course_type = course_type        self.course_name = course_name        self.course_price = course_price        self.course_period = course_period        self.course_place = course_place    def show_course_info(self):        print("课程类型:%s,名称:%s,价格:%s,周期:%s" % (self.course_type, self.course_name,                                             self.course_price, self.course_period))class Classroom(object):  # 班级类    def __init__(self, classroom_name, classroom_period, classroom_school_name):        self.classroom_name = classroom_name        self.classroom_period = classroom_period        self.classroom_school_name = classroom_school_name    def show_classroom_info(self):        print("班级名称:%s\n班级周期:%s" % (self.classroom_name, self.classroom_period))class SchoolMember(object):  # 学校成员类(学生/老师)    def __init__(self, member_name, member_sex, member_age):        self.member_name = member_name        self.member_sex = member_sex        self.member_age = member_ageclass Student(SchoolMember):  # 创建学生类(继承学校成员类)    def __init__(self, stu_school, stu_name, stu_sex, stu_age, stu_id, stu_course, course_price):        super(Student, self).__init__(stu_name, stu_sex, stu_age)        self.stu_school = stu_school        self.stu_id = stu_id        self.stu_course = stu_course        self.course_price = course_price    def show_student_info(self):        print("""        ---------------学生%s的信息--------------        Name:%s        School:%s        Sex:%s        Age:%s        ID:%s        Course:%s        Course_price:%s        """ % (stu1.member_name, stu1.member_name, stu1.stu_school, stu1.member_sex,               stu1.member_age, stu1.stu_id, stu1.stu_course, stu1.course_price))class Teacher(SchoolMember):  # 讲师类    def __init__(self, teacher_name, teacher_sex, teacher_age, teacher_course, teacher_classroom, teacher_school_name):        super(Teacher, self).__init__(teacher_name, teacher_sex, teacher_age)        self.teacher_course = teacher_course        self.teacher_classroom = teacher_classroom        self.teacher_school_name = teacher_school_name    def show_teacher_info(self):        print("""        -------------讲师%s的信息-------------        Name:%s        Sex:%s        Age:%s        Course:%s        Classroom:%s        School_name:%s        """ % (self.member_name, self.member_name, self.member_sex, self.member_age,               self.teacher_course, self.teacher_classroom, self.teacher_school_name))    def show_classroom(self, te_name):  # 查看班级信息   传一个班级对象,通过对象查看班级信息        class_room = Classroom(teachers_dict[te_name].teacher_classroom,                               courses_dict[teachers_dict[te_name].teacher_course].course_period,                               choice_school_obj.school_name)        class_room.show_classroom_info()    def show_student(self):  # 查看学生信息    传一个学生对象,通过对象查看学生信息        stu_name = raw_input("请输入要查看学生名字:")        stu_dict[stu_name].show_student_info()def stu_regiest():  # 学生注册方法,目的是为了生成学生对象    global stu1  # 定义学生变量为全局变量    stu_name = raw_input("请输入学生姓名:")    stu_sex = raw_input("请输入学生性别:")    stu_age = input("请输入学生年龄:")    stu_id = raw_input("请输入学生序号")    print("1.%s[%sRMB], 2.%s[%sRMB], 3.%s[%sRMB], 4.返回" % (course1.course_name, course1.course_price,                                                           course2.course_name, course2.course_price,                                                           course3.course_name, course3.course_price))    while True:        course_num = raw_input("请选择课程:")        if course_num == '1':            stu_course = course1.course_name            stu1 = Student(choice_school_obj.school_name, stu_name, stu_sex,                           stu_age, stu_id, stu_course, course1.course_price)            stu_dict[stu_name] = stu1            break        elif course_num == '2':            stu_course = course2.course_name            stu1 = Student(choice_school_obj.school_name, stu_name, stu_sex,                           stu_age, stu_id, stu_course, course2.course_price)            stu_dict[stu_name] = stu1            break        elif course_num == '3':            stu_course = course3.course_name            stu1 = Student(choice_school_obj.school_name, stu_name, stu_sex,                           stu_age, stu_id, stu_course, course3.course_price)            stu_dict[stu_name] = stu1            break        elif course_num == '4':            break        else:            continue    stu1.show_student_info()def students_view():  # 学员视图    while True:        pro = """        1.欢迎注册        2.返回        3.退出        请选择:        """        num = raw_input(pro)        if num == '1':            stu_regiest()  # 调用学生注册方法并生成学生对象        elif num == '2':            break        elif num == '3':            sys.exit()        else:            continuedef teacher_view():  # 讲师视图    name = raw_input("请输入讲师姓名:")    while True:        if dic.get(name) or teachers_dict.get(name):            print("欢迎%s讲师".center(50, '-') % name)        elif not dic.get(name) and not teachers_dict.get(name):            print("%s讲师不存在" % name)            break        pro = """        1.查看班级        2.查看学员信息        3.返回        4.退出        请输入你的选择:        """        num = raw_input(pro)        if num == '1':            if teachers_dict.get(name):                teachers_dict[name].show_classroom(name)  # 查看班级信息            else:                print("功能未完善,只能输入lvah,cheng")        elif num == '2':            if teachers_dict.get(name):                teachers_dict[name].show_student()  # 查看学生信息            else:                print("功能未完善,只能输入lvah,cheng")        elif num == '3':            break        elif num == '4':            sys.exit()        else:            continuedef school_view():  # 学校视图    while True:        pro = """        1.创建班级        2.创建课程        3.雇用讲师        4.返回        请输入你的选择:        """        num = raw_input(pro)        if num == '1':            choice_school_obj.create_class()        elif num == '2':            choice_school_obj.create_course()        elif num == '3':            choice_school_obj.hire_teacher()        elif num == '4':            break        else:            continuedef main():    global dic  # 全局变量    global choice_school_obj    dic = {}    while True:        print("请选择学校".center(50, '*'))        pro1 = """    1. %s    2. %s    3. 返回    4. 退出    请输入你的选择:        """ % (s1.school_name, s2.school_name)        choice_school = raw_input(pro1)        if choice_school == '1':            choice_school_obj = s1  # 将对象引用传给choice_school        elif choice_school == '2':            choice_school_obj = s2        elif choice_school == '3':            break        elif choice_school == '4':            sys.exit()        else:            continue        while True:            print("请选择视图".center(50, '*'))            pro2 = """        1.学员视图        2.讲师视图        3.学校管理视图        4.返回        5.退出        请选择视图:        """            num = raw_input(pro2)            if num == '1':                print("欢迎进入学员视图".center(50, '*'))                students_view()            elif num == '2':                print("欢迎进入讲师视图".center(50, '*'))                teacher_view()            elif num == '3':                print("欢迎进入学校管理视图".center(50, '*'))                school_view()            elif num == '4':                break            elif num == '5':                sys.exit()            else:                continueif __name__ == '__main__':    classrooms = {}    teachers_dict = {}    courses_dict = {}    stu_dict = {}    s1 = School("西安邮电大学", "曲江")  # 实例化学校    s2 = School("西安理工大学", "长安区")    course1 = Course("技术", "C", "11800", "1 year", "曲江")    course2 = Course("技术", "Java", "6400", "7 month", "曲江")  # 实例化三个课程    course3 = Course("技术", "RHCE", "2400", "4 month", "长安区")    course4 = Course("技术", "Linux", "2400", "4 month", "长安区")    courses_dict["C"] = course1    courses_dict["Java"] = course2    courses_dict["RHCE"] = course3    courses_dict["Linux"] = course4    t1 = Teacher("老李", "M", "33", "RHCE", "红帽1701", "西安邮电大学")    t2 = Teacher("老吴", "M", "35", "Linux", "Linux1702", "西安理工大学")  # 实例化两个讲师    teachers_dict["老李"] = t1    teachers_dict["老吴"] = t2    teacher_dict = {"teacher_name": "老李", "teacher_sex": "M", "teacher_age": "33",                    "teacher_course": "RHCE", "teacher_classroom": "红帽1701"}    teacher_dict = {"teacher_name": "老吴", "teacher_sex": "M", "teacher_age": "35",                    "teacher_course": "Linux", "teacher_classroom": "Linux1702"}    print(s1, s2)    # print teacher_dict    main()
  • 运行结果:
    这里写图片描述