day8-字典和集合作业

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

    student = [{'name':'王一','age':18,'score':86,'tel':'12435','gender':'男'},
            {'name':'王二','age':19,'score':58,'tel':'12438','gender':'男'},
            {'name':'王三','age':20,'score':66,'tel':'12448','gender':'男'},
            {'name':'王四','age':17,'score':53,'tel':'12435','gender':'男'},
            {'name':'王五','age':16,'score':70,'tel':'12435','gender':'男'},
            {'name':'王六','age':19,'score':31,'tel':'12435','gender':'男'}
            ]
    
    1. 统计不及格学生的个数

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

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

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

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

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

      a=[]
      b={}
      for x in student:
          a.append(x['score'])
      a.sort(reverse=True)
      pass
      
  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    english ={'王一','王二','李三','周五','赵六'}
    math = {'王二','王三','李四','周五','赵六'}
    science =  {'王一','王二','李四','周三','赵五'}
    
    1. 求选课学生总共有多少人

      count = 0
      a = set()
      a.update((english|math)|science)
      for x in a:
          count+=1
      print(count)
      
    2. 求只选了第一个学科的人的数量和对应的名字

      count = 0
      for x in english:
          if x not in math|science:
              count+=1
      print(english-(math|science),count)
      
    3. 求只选了一门学科的学生的数量和对应的名字

      a = set()
      a.update((english|math)^science)
      print(a)
      count=0
      for x in a:
          if x not in english & math:
              count+=1
              print(x,end='')
      print(count)
      
    4. 求只选了两门学科的学生的数量和对应的名字

      a = set()
      a.update((math & english)|(math & science)^(science & english))
      count=0
      for x in a:
          count+=1
          print(x, end='')
      print(count)
      
    5. 求选了三门学生的学生的数量和对应的名字

      a = set()
      a.update(math&science&english)
      count = 0
      for x in a :
          count+=1
          print(x,end='')
      print(count)
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值