7.字典和集合练习

  1. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    1. 统计不及格学生的个数

    2. 打印不及格学生的名字和对应的成绩

    3. 统计未成年学生的个数

    4. 打印手机尾号是8的学生的名字

    5. 打印最高分和对应的学生的名字

    6. 删除性别不明的所有学生

    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

      students = [
          {'name': '张三', 'age': 18, 'score': 77, 'phone_num': '1111111', 'gender': 'male'},
          {'name': '小明', 'age': 19, 'score': 99, 'phone_num': '2222222', 'gender': 'male'},
          {'name': '小红', 'age': 17, 'score': 56, 'phone_num': '3333333', 'gender': 'female'},
          {'name': '小芳', 'age': 18, 'score': 99, 'phone_num': '4444444', 'gender': '性别不明'},
          {'name': '李四', 'age': 20, 'score': 54, 'phone_num': '5555555', 'gender': 'male'},
          {'name': '大明', 'age': 21, 'score': 94, 'phone_num': '6666668', 'gender': 'male'}
      ]
      # a.统计不及格学生的个数
      count = 0
      for x in students:
          if x['score'] < 60:
              count += 1
      print('不及格学生的个数:', count)
      
      # b.打印不及格学生的名字和对应的成绩
      for x in students:
          if x['score'] < 60:
              print(x['name'], x['score'])
      
      # c.统计未成年学生的个数
      count = 0
      for x in students:
          if x['age'] < 18:
              count += 1
      print('未成年学生的个数:', count)
      
      # d.打印手机尾号是8的学生的名字
      for x in students:
         if x['phone_num'][-1] == '8':
             print('手机尾号是8的学生的名字:',  x['name'])
      
      # e.打印最高分和对应的学生的名字
      score = 0
      for x in students:
          if x['score'] > score:
              score = x['score']
      for x in students:
          if x['score'] == score:
              print(x['name'], score)
      
      # f.删除性别不明的所有学生
      for x in students:
          if x['gender'] == '性别不明':
              students.remove(x)
      print(students)
      
      # g.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
      score = []
      new_students = []
      for x in students:
          score.append(x['score'])
          score.sort(reverse=True)
      print(score)
      for x in score:
          for y in students:
              if x == y['score']:
                  new_students.append(y)
      print(new_students)
      
  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    1. 求选课学生总共有多少人

    2. 求只选了第一个学科的人的数量和对应的名字

    3. 求只选了一门学科的学生的数量和对应的名字

    4. 求只选了两门学科的学生的数量和对应的名字

    5. 求选了三门学生的学生的数量和对应的名字

      english = {'张三', '李四', '王五', '小明', '小红', '小黑'}
      math = {'李四', '王五', '小芳', '大芳', '丹丹'}
      chinese = {'张三', '王五', '小黑', '小兵', '大黑'}
      # 1. 求选课学生总共有多少人
      students_all = english | math | chinese
      print(len(students_all))
      # 2. 求只选了第一个学科的人的数量和对应的名字
      students_first = english - math - chinese
      print(students_first, len(students_all))
      # 3. 求只选了一门学科的学生的数量和对应的名字
      students_chinese = chinese - (english | math)
      students_math = math - (english | chinese)
      students_english = english - (math | chinese)
      students_1 = students_english | students_math | students_chinese
      print(students_1, len(students_1))
      # 4. 求只选了两门学科的学生的数量和对应的名字
      students_2 = students_all - students_1 - (english & math & chinese)
      print(students_2, len(students_2))
      # 5. 求选了三门学生的学生的数量和对应的名字
      students = english & math & chinese
      print(students, len(students))
      

3.视屏题(学生信息系统)

students = [
    {'学号': 'stu001', '姓名': 'aa', '年龄': 18, '电话': '7654'},
    {'学号': 'stu002', '姓名': 'bb', '年龄': 20, '电话': '9563'},
    {'学号': 'stu003', '姓名': 'cc', '年龄': 19, '电话': '6532'},
    {'学号': 'stu004', '姓名': 'dd', '年龄': 21, '电话': '1278'},
    {'学号': 'stu005', '姓名': 'ee', '年龄': 22, '电话': '8234'},
]
while True:
    print('1.  添加学生')
    print('2.  查看学生')
    print('3.  修改学生信息')
    print('4.  删除学生')
    print('5.  返回')
    choose1 = input('请选择(1~5):')
    if choose1 == '5':
        break
    else:
        while True:
            if choose1 == '1':
                stu = {}
                if len(students) < 10:
                    stu['学号'] = 'stu00' + str(len(students) + 1)
                elif len(students) < 100:
                    stu['学号'] = 'stu0' + str(len(students) + 1)
                elif len(students) < 1000:
                    stu['学号'] = 'stu' + str(len(students) + 1)
                stu['姓名'] = input('请输入学生姓名:')
                stu['年龄'] = input('请输入学生的年龄:')
                stu['电话'] = input('请输入学生的电话:')
                students.append(stu)
                print('添加成功!')
                print('1.  继续')
                print('2.  返回')
                choose2 = input('请选择(1-2):')
                if choose2 == '2':
                    break
            if choose1 == '2':
                print('1.查看所有学生')
                print('2.按姓名查找')
                print('3.按学号查找')
                print('4.返回')
                choose3 = input('请选择(1-4):')
                if choose3 == '1':
                    print(students)
                if choose3 == '2':
                    name = input('请输入姓名:')
                    for student in students:
                        if student['姓名'] == name:
                            print(student)
                if choose3 == '3':
                    stu_num = input('请输入学号:')
                    for student in students:
                        if student['学号'] == stu_num:
                            print(student)
                elif choose3 == '4':
                    break
            if choose1 == '3':
                name = input('请输入需要修改的学生姓名:')
                for student in students:
                    if student['姓名'] == name:
                        stu_num = input('是否修改学号(是:1,否:2):')
                        if stu_num == '1':
                            new_stu_num = input('学号修改为:')
                            student['年龄'] = new_stu_num
                        age = input('是否修改年龄(是:1,否:2):')
                        if age == '1':
                            new_age = input('年龄修改为:')
                            student['年龄'] = new_age
                        tel = input('是否修改电话(是:1,否:2):')
                        if tel == '1':
                            new_tel = input('电话修改为:')
                            student['电话'] = new_tel
                else:
                    print('该学生不存在')
                break
            if choose1 == '4':
                name = input('请输入需要删除学生姓名:')
                for student in students:
                    if student['姓名'] == name:
                        students.remove(student)
                else:
                    print('该学生不存在')
                break
print(students)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值