day8-字典和集合作业

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

    stus = [    
        {'name': 'stu1', 'age': 18, 'score': 98, 'tel': '001', 'gender': '男'}, 
        {'name': 'stu2', 'age': 18, 'score': 56, 'tel': '464', 'gender': '不明'},  
        {'name': 'stu3', 'age': 18, 'score': 49, 'tel': '648', 'gender': '女'},   
        {'name': 'stu4', 'age': 18, 'score': 90, 'tel': '679', 'gender': '女'},  
        {'name': 'stu5', 'age': 18, 'score': 60, 'tel': '498', 'gender': '男'},   
        {'name': 'stu6', 'age': 18, 'score': 74, 'tel': '214', 'gender': '不明'}
    ]
    
    1. 统计不及格学生的个数

      count = 0
      for stu in stus: 
          if stu['score'] < 60:
              count += 1
      print(count)
      
    2. 打印不及格学生的名字和对应的成绩

      for stu in stus:
          if stu['score'] < 60:
              print(stu['name'], stu['score'])
      
    3. 打印手机尾号是8的学生的名字

      for stu in stus: 
          if stu['tel'][-1] == '8':
              print(stu['name'])
      
    4. 打印最高分和对应的学生的名字

      max_score = 0
      _stu = 0
      for stu in stus: 
          if stu['score'] > max_score: 
              max_score = stu['score']  
              _stu = stu
      print(max_score, _stu['name'])
      
    5. 删除性别不明的所有学生

      for stu in stus.copy(): 
          if stu['gender'] == '不明': 
              stus.remove(stu)
      print(stus)
      
    6. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

      new_stus = stus.copy()
      for item in stus.copy():
          s1 = 0   
          for stu in stus: 
              if item['score'] > stu['score']:
                  s1 += 1   
                  new_stus[3-s1+1] = item
      print(new_stus)
      
  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    sub1 = {'赵六', '钱七', '孙八', '李九'}
    sub2 = {'周三', '吴四', '郑五', '王六', '钱七', '李九'}
    sub3 = {'赵六', '钱七', '吴四', '郑五'}
    
    1. 求选课学生总共有多少人

      sum1 = (sub1 | sub2) | sub3
      print(sum1)
      
    2. 求只选了第一个学科的人的数量和对应的名字

      print(sub1, len(sub1))
      
    3. 求只选了一门学科的学生的数量和对应的名字

      a = sum1 - ((sub1 | sub2) - (sub1 ^ sub2)) - ((sub2 | sub3) - (sub2 ^ sub3))- ((sub1 | sub3) - (sub1 ^ sub3))
      print(a, len(a))
      
    4. 求只选了两门学科的学生的数量和对应的名字

      sum2 = sum1 - a - ((sub1 & sub2) & sub3)
      print(sum2, len(sum2))
      
    5. 求选了三门学生的学生的数量和对应的名字

      print(sum1-a-sum2, len(sum1-a-sum2))
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值