主要内容 #
综合实战:使用python编写学生信息管理系统3.查询学生信息 #
上一课中我们实现了管理系统中添加的功能,以下示例是查询功能的实现,注意其中关键字in和列表推导表达式的应用,以及try/except处理不确定输入时的一种思路。stu=[{'id':'001',"name": '李明', "English": 97, "python": 100}, {'id':'002',"name": '王晓东', "English": 91, "python": 89}, {'id':'003',"name": '杨雪', "English": 98, "python": 92}, {'id':'004',"name": '冯小乐', "English": 87, "python": 98}, {'id':'005',"name": '刘前进', "English": 84, "python": 92}, ]#建立一个保存学生信息的列表 def search():#通过学号或者姓名查询学生信息 while True: idlist = [i['id'] for i in stu]#列表推导表达式建立学号列表,循环变量i表示列表stu中的元素,其数据类型为字典 namelist = [i["name"] for i in stu] temp=input('请输入学号或姓名:')#注意用户输入学号或姓名 if temp in idlist or temp in namelist: try:#如果输入为学号,则该模块正常执行 print(stu[idlist.index(temp)])#想一想为什么? except:#如果输入为姓名,执行该模块 print(stu[namelist.index(temp)]) else: print('输入有误!')#输入的既不是学号也不是姓名 continue mark = input('是否继续查询?(y/n):') if mark == 'y': continue#本层循环从头开始 elif mark == 'n': break#结束本层循环 else: print('请输入y or n') break search()
4.简易学生管理系统 #
上节课封装好的insert()函数实现了系统的添加功能,本节课的search()函数实现了查询功能,我们只需根据用户的输入调用相关的函数,就能实现一个最简易的管理系统!stu=[{'id':'001',"name": '李明', "English": 97, "python": 100}, {'id':'002',"name": '王晓东', "English": 91, "python": 89}, {'id':'003',"name": '杨雪', "English": 98, "python": 92}, {'id':'004',"name": '冯小乐', "English": 87, "python": 98}, {'id':'005',"name": '刘前进', "English": 84, "python": 92}, ]#建立一个保存学生信息的列表 ###################函数定义区 def insert():#添加学生信息函数insert() while True: id = input("请输入ID:"); name = input('请输入姓名:') # 输入学号和姓名 while True: # 通过无限循环和try…except语句保证用户能正确输入成绩 try: py = int(input('请输入python成绩:')) eng = int(input('请输入英语成绩:')) break # 结束本层循环 except: print('所输入的成绩需为整数!') continue # 本层循环从头开始 stu.append({'id': id, "name": name, "English": eng, "python": py}) # 增加学生列表信息 mark = input('添加成功! 是否继续输入?(y/n):') if mark == 'y': continue elif mark == 'n': break else: print('请输入y or n') break def search():#通过学号或者姓名查询学生信息 while True: idlist = [i['id'] for i in stu]#列表推导表达式建立学号列表,循环变量i表示列表stu中的元素,其数据类型为字典 namelist = [i["name"] for i in stu] temp=input('请输入学号或姓名:')#注意用户输入学号或姓名 if temp in idlist or temp in namelist: try:#如果输入为学号,则该模块正常执行 print(stu[idlist.index(temp)])#想一想为什么? except:#如果输入为姓名,执行该模块 print(stu[namelist.index(temp)]) else: print('输入有误!')#输入的既不是学号也不是姓名 continue mark = input('是否继续查询?(y/n):') if mark == 'y': continue#本层循环从头开始 elif mark == 'n': break#结束本层循环 else: print('请输入y or n') break ###################函数定义区 while True:#无限循环,判断用户的需求 option = input("请输入1(添加)或2(查询):") if option=='1': insert() elif option=='2': search() else: print('输入错误!!') break
习题 #
OJ训练题 #
1、【入门】班长问题 – ★
2、【例23.1】 后天星期 – ★
3、【入门】整除问题 – ★
4、【入门】求100+97+……+4+1的值。 – ★★
5、【入门】数字之和为13的整数 – ★★★