学习Python的D8字典和集合作业

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

    class1 = [
        {'name': '张三', 'age': 18, 'score': 56, 'tel': '12', 'xb': '男'},
        {'name': '李四', 'age': 19, 'score': 89, 'tel': '34', 'xb': '男'},
        {'name': '王五', 'age': 17, 'score': 47, 'tel': '56', 'xb': '男'},
        {'name': '赵六', 'age': 18, 'score': 70, 'tel': '78', 'xb': '不明'},
        {'name': '万红', 'age': 19, 'score': 92, 'tel': '90', 'xb': '女'},
        {'name': '孙丽', 'age': 18, 'score': 73, 'tel': '00', 'xb': '女'},
    ]
    
    1. 统计不及格学生的个数

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

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

      list1 = [x['name'] for x in class1 if x['tel'] % 10 == 8]
      print(list1)
      
    4. 打印最高分和对应的学生的名字

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

      for y, x in enumerate(class1[0:]):
          if x['xb'] == '不明':
              del class1[y]
      print(class1)
      
    6. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

  2. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    tennis = {'张三', '王五', '赵六', '万红'}
    swimming = {'李四', '赵六', '万红', '孙丽'}
    basketball = {'张三', '李四', '王五', '孙丽'}
    
    1. 求选课学生总共有多少人

      print(tennis | swimming | basketball)
      
    2. 求只选了第一个学科的人的数量和对应的名字

      a = 0
      for x in tennis:
          a += 1
          print(x)
      print(a)
      
    3. 求只选了一门学科的学生的数量和对应的名字

      a = (tennis | swimming | baskeball) - (tennis & swimming) - (swimming & baskeball) - (tennis & baskeball)
      print(len(a), a)
      
    4. 求只选了两门学科的学生的数量和对应的名字

       count =0
    a = set()
       for x in tennis:
           if (x in swimming and x not in basketball) or (x in basketball and x not in swimming):
               count+=1
               a.add(x)
       print('只选了两门学科的人数为:',count,'名字有:',a)
    
    1. 求选了三门学生的学生的数量和对应的名字

      a = tennis & swimming & basketball
      b = 0
      for x in a:
          b += 1
      print('数量', b, '名字', a)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值