day8字典作业

  1. 定义一个变量保存一个学生的信息,学生信心中包括:姓名、年龄、成绩(单科)、电话、性别
stu={
    "name":"李浩",
    "age":22,
    "score":99,
    "tel":10086,
    "sex":"男"
}
print(stu)

#结果
{'name': '李浩', 'age': 22, 'score': 99, 'tel': 10086, 'sex': '男'}
  1. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    all_stu = [
        {
            "name": "李浩",
            "age": 22,
            "score": 58,
            "tel": 10086,
            "sex": "男"
        },
        {
            "name": "张媛媛",
            "age": 21,
            "score": 100,
            "tel": 155554,
            "sex": "女"
        },
        {
            "name": "李建国",
            "age": 23,
            "score": 70,
            "tel": 101,
            "sex": "男"
        },
        {
            "name": "李建平",
            "age": 22,
            "score": 33,
            "tel": 1008611,
            "sex": "男"
        },
        {
            "name": "李鹏辉",
            "age": 24,
            "score": 85,
            "tel": 135896,
            "sex": "男"
        },
        {
            "name": "张建平",
            "age": 20,
            "score": 90,
            "tel": 16954,
            "sex": "男"
        }
    ]
    
    1. 统计不及格学生的个数

      count=0
      for i in all_stu:
          if i["score"]<60:
              count+=1
      print(count)
      #结果
      2
      
    2. 打印不及格未成年学生的名字和对应的成绩

      for i in all_stu:
          if i["score"]<60 and i["age"]<18:
      
              print(i["score"],i["name"])
              
      #结果
       58 ,李浩    
      
    3. 求所有男生的平均年龄

      sum=0
      for i in all_stu:
          if i["sex"]=="男":
              sum+=i["age"]
      print(sum/len(i))
      
      #结果
      21.0
      
      #方法2
      
      count=0#放人数
      total=0#放年龄
      for stu in all_student:
          if stu.get("sex")=="男":
              count+=1
              tatal+=stu["age"]
      print("平均年龄为:",total/count)
      
    4. 打印手机尾号是8的学生的名字

      for i in all_stu:
          if i["tel"]%10==8:
              print(i["name"])
              
      #结果
      李建平
      
      
      #方法2:用-1的方式来,注意:如果tel是字符串类型,那么判断条件就是i["tel"]=="8"
      for i in all_stu:
          if i["tel"][-1]==8:
              print(i["name"])
      
      
    5. 打印最高分和对应的学生的名字

      #只能针对于最高分只有一个的情况
      max1=student[0].get("score")
      for i in student:
          if i["score"]>max1:
              max1=i["score"]
              print(max1,i["name"])
      #
      100 张媛媛
      
      
      #方法2先求出最高分,再循环取出成绩达到最高分的姓名
      max1=student[0].get("score")
      for i in student:
          if i["score"]>max1:
              max1=i["score"]
              print(max1,i["name"])
              
      for i in student:
          if i["score"]==max1:
              print(i["name"])
              
              
      #方法3:创建列表,存放名字,创建变量存放分数(对于最高分有多个人的情况)
      #逻辑:定义一个列表保存最高分对应的姓名,可能是多个,假设列表中的第一个元素的分数为最高分,如果后面元素的分数比第一个高,更新max2的值,同时清空names中名字,将max2对应的名字添加到names中,如果还存在最高分有多个的情况,也将其余最高分对应的名字添加到names中
      max2=student[0][["score"]]#
      names=[]
      for stu in student[1:]:
          if stu["score"]>max2:
              max2=stu["score"]
              names.clear()
              names.append(stu["name"])
          elif stu["score"]==max2:
              names.append(stu["name"])
      print(max2,names)
      
      
    6. 删除性别不明的所有学生

      #可能存在性别不明或者没有性别的人(生活角度:性别不明就是没有,即没有gender数据)
      for stu in student.copy():
          if not stu.get("sex"):
              student.remove(stu)
      print(student)
      
    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

      score_list = [x['score'] for x in all_student]# 定义列表变量score_list保存所有成绩
      score_list.sort(reverse=True)                   # 将成绩从大到小排列
      stu_list1 = []
      for score in score_list:
          for stu in student1:
              if stu['score'] == score:
                  stu_list1.append(stu)
                  break
      print(stu_list1)
      
      
      #方法2:匿名函数sort(reverse,key)key-排序关键字,即以什么排序
      student.sort(reverse=True,key=lambda stu:stu["score"])
      
  2. 定义一个变量保存一个班级的信息,班级信息中包括:班级名称、教室位置、班主任信息、讲师信息、班级所有的学生(根据实际情况确定数据类型和具体信息)

    
    classroom={
        "name":"java",
        "location":"肖家河",
        "leader":"婷姐",
        "speaker":"丽姐",
        "stu":[
    
                {
                    "name": "李浩",
                    "age": 16,
                    "score": 58,
                    "tel": 10086,
                    "sex": "男"
                },
                {
                    "name": "张媛媛",
                    "age": 21,
                    "score": 100,
                    "tel": 155554,
                    "sex": "女"
                },
                {
                    "name": "李建国",
                    "age": 23,
                    "score": 70,
                    "tel": 101,
                    "sex": "男"
                },
                {
                    "name": "李建平",
                    "age": 22,
                    "score": 33,
                    "tel": 1008618,
                    "sex": "男"
                },
                {
                    "name": "李鹏辉",
                    "age": 24,
                    "score": 85,
                    "tel": 135896,
                    "sex": "男"
                },
                {
                    "name": "张建平",
                    "age": 20,
                    "score": 90,
                    "tel": 16954,
                    "sex": "男"
                }
            
        ]
    }
    
  3. 已知一个列表保存了多个狗对应的字典:

    dogs = [
      {'name': '贝贝', 'color': '白色', 'breed': '银狐', 'age': 3, 'gender': '母'},
      {'name': '花花', 'color': '灰色', 'breed': '法斗', 'age': 2},
      {'name': '财财', 'color': '黑色', 'breed': '土狗', 'age': 5, 'gender': '公'},
      {'name': '包子', 'color': '黄色', 'breed': '哈士奇', 'age': 1},
      {'name': '可乐', 'color': '白色', 'breed': '银狐', 'age': 2},
      {'name': '旺财', 'color': '黄色', 'breed': '土狗', 'age': 2, 'gender': '母'}
    ]
    
    1. 利用列表推导式获取所有狗的品种

      [‘银狐’, ‘法斗’, ‘土狗’, ‘哈士奇’, ‘银狐’, ‘土狗’]

      result=[i["breed"] for i in dogs]
      print(result)
      
    2. 利用列表推导式获取所有白色狗的名字

      [‘贝贝’, ‘可乐’]

      result=[i["name"] for i in dogs if i["color"]=="白色"]
      print(result)
      
    3. 给dogs中没有性别的狗添加性别为 ‘公’

      result = [i.setdefault("gender", "公") for i in dogs]
      print(dogs)
      
      
    4. 统计 ‘银狐’ 的数量

    count=0
    for i in dogs:
      if i["breed"]=="银狐":
        count+=1
    print(count)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值