跳至正文
View Categories

2 min read

主要内容 #

综合实战:使用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

习题 #

  • 在示例2的serch()函数定义中,请使用列表append()函数重新构建idlist以及namelist列表,并运行示例2验证重新定义后的search()函数的功能
  • OJ训练题 #

    1、【入门】班长问题 – ★
    2、【例23.1】 后天星期 – ★
    3、【入门】整除问题 – ★
    4、【入门】求100+97+……+4+1的值。 – ★★
    5、【入门】数字之和为13的整数 – ★★★