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()
- 运行结果:
阅读全文
0 0
- python pygame练习6
- Python 练习实例6
- Python练习实例6
- Python -练习6
- Python 练习实例6
- Python 练习实例6
- Python练习100例-6
- Python练习6-文件遍历
- 熟能生巧,几个PYTHON练习--Python(6)
- python练习
- python练习
- Python练习
- python练习
- python练习
- #python#练习
- python 练习
- 【python练习】
- python练习
- python学习一:编译工具pycharm的下载安装
- 敏捷开发
- 野指针【C++】
- 排序算法
- 贪心算法
- Python -练习6
- windows下用vs2013编译caffe,得可用的release库,含Python和Matlab接口配置
- 全排列递归算法java实现
- ASP.NET Core Razor 视图组件
- * 随机数、随即字符串工具
- 简述clear和clearfix
- 导入技巧
- leetcode4. Median of Two Sorted Arrays
- Linux shell