day8-字典和集合作业

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

    students = [
        {'name': 'Amy', 'age':'18', 'score':78, 'Tel':'17745468818', 'gender':'女'},
        {'name': 'Ben', 'age':'20', 'score':100, 'Tel':'15828597557', 'gender':'男'},
        {'name': 'Nancy', 'age':'22', 'score':60, 'Tel':'15108348975', 'gender':'女'},
        {'name': 'Juli', 'age':'25', 'score':12, 'Tel':'15102820528', 'gender':'女'},
        {'name': 'Ivy', 'age':'15', 'score':80, 'Tel':'13683458085', 'gender':'不明'},
        {'name': 'Jack', 'age':'17', 'score':89, 'Tel':'12345678910', 'gender':'男'}
    ]
    
    1. 统计不及格学生的个数

      count_score = 0
      for item in students:
          if item['score'] < 60:
             count_score +=1
      print('不及格的学生个数:',count_score)
      
    2. 打印不及格学生的名字和对应的成绩

      print('不及格的学生名字和对应成绩')
      for item in students:
          if item['score']<60:
              print('姓名:',item['name'],'成绩:',item['score'])
      
    3. 打印手机尾号是8的学生的名字

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

      stu_name = ''
      max_score = 0
      for stu in students:
         if stu['score']>max_score:
             max_score=stu['score']
             stu_name=stu['name']
      print('分数最高学生的姓名:',stu_name)
      
    5. 删除性别不明的所有学生

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

      sort_students = sorted(students, key=lambda students: students["score"],reverse=True)
      print(sort_students)
      
       for index in range(len(students)):
           for next in range(0,len(students)-index-1):
               if students[next]['score']<students[next+1]['score']:
                   students[next],students[next+1] = students[next+1],students[next]
       print(students)
       
      
  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    biology = {'陆景和','左然','夏彦','莫奕','蔷薇'}
    math = {'陆景和','左然','夏彦','莫奕','蔷薇','Ivy','ben'}
    English = {'左然','夏彦','莫奕','Ivy','Jack'}
    
    1. 求选课学生总共有多少人

      print(len(biology|math|English))
      
    2. 求只选了第一个学科的人的数量和对应的名字

      print(biology-(math|English))
      
    3. 求只选了一门学科的学生的数量和对应的名字

      set1 = biology - (math | English) | math - (biology | English) | English - (biology | math)
      print('只选了一门学科的学生的数量:', len(set1), '学生姓名:', *list(set1))
      
    4. 求只选了两门学科的学生的数量和对应的名字

      set2=(biology & math - English)|(biology & English - math)|(English & math - biology)
      print('只选了两门学科的学生的数量:', len(set2), '学生姓名:', *list(set2))
      
    5. 求选了三门学生的学生的数量和对应的名字

      set3 = biology & math & English
      print('选了三门学生的学生的数量:', len(set3), '学生姓名:', *list(set3))
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值