Day7 作业

作者: 风月辞寒 | 来源:发表于2019-07-30 19:06 被阅读0次

    1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)

    stu = {'name': '小罗', '年龄': 21, '成绩': 100, '电话': '12348437004', '性别': '男'}
    

    2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
    a.统计不及格学生的个数
    b.打印不及格学生的名字和对应的成绩
    c.统计未成年学生的个数
    d.打印手机尾号是8的学生的名字
    e.打印最高分和对应的学生的名字
    f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
    g.删除性别不明的所有学生

    stu_list = [
        {'name': '小罗', 'age': 21, 'score': 89, 'tel': '12348437004', 'sex': '男'},
        {'name': '小华', 'age': 17, 'score': 59, 'tel': '12348437008', 'sex': '男'},
        {'name': '小强', 'age': 20, 'score': 99, 'tel': '12348437006', 'sex': '女'},
        {'name': '小李', 'age': 21, 'score': 55, 'tel': '12348437005', 'sex': '不明'},
        {'name': '小刚', 'age': 17, 'score': 96, 'tel': '12348437007', 'sex': '男'},
        {'name': '小红', 'age': 21, 'score': 98, 'tel': '12348437009', 'sex': '不明'},
    ]
    
    sc_count = age_count = max_score = 0
    for stu in stu_list:
        if stu['score'] < 60:       # 打印不集合学生和成绩
            sc_count += 1
            print(stu['name'], stu['score'])    # 小华 59  小李 55
    
        if stu['age'] < 18:         # 统计未成年人数
            age_count += 1
    
        if stu['tel'][-1] == '8':       # 打印手机尾数为8的学生名字
            print(stu['name'], '手机尾数是8')    # 小华 手机尾数是8
    
        if max_score < stu['score']:        # 找出最高分
            max_score = stu['score']
    
    for stu in stu_list:        # 打印最高分的学生名字
        if stu['score'] == max_score:
            print(stu['name'], '是最高分:', max_score)      # 小强 是最高分: 99
    print('不及格的学生有:', sc_count, '个')   # 不及格的学生有: 2 个
    print('未成年学生有:', age_count, '个')    # 未成年学生有: 2 个
    
    # i = 0
    # while i < len(stu_list):        # 从大到小排序
    #     for n in range(i + 1, len(stu_list)):
    #         if stu_list[i]['score'] < stu_list[n]['score']:
    #             stu_list[i], stu_list[n] = stu_list[n], stu_list[i]
    #     i += 1
    # print(stu_list)
    
    
    # def score_lis(elem):
    #     return elem['score']
    #
    #
    # stu_list.sort(reverse=True, key=score_lis)    # 定义函数调用
    # print(stu_list)
    
    stu_list.sort(reverse=True, key=lambda lis_score: lis_score['score'])   # 匿名函数
    print(stu_list)
    """
    [{'name': '小强', 'age': 20, 'score': 99, 'tel': '12348437006', 'sex': '女'},
    {'name': '小红', 'age': 21, 'score': 98, 'tel': '12348437009', 'sex': '不明'},
    {'name': '小刚', 'age': 17, 'score': 96, 'tel': '12348437007', 'sex': '男'},
    {'name': '小罗', 'age': 21, 'score': 89, 'tel': '12348437004', 'sex': '男'},
    {'name': '小华', 'age': 17, 'score': 59, 'tel': '12348437008', 'sex': '男'},
    {'name': '小李', 'age': 21, 'score': 55, 'tel': '12348437005', 'sex': '不明'}]
    """
    
    for n in range(len(stu_list)-1, -1, -1):    # 删除性别不明的学生
        if stu_list[n]['sex'] == '不明':
            stu_list.remove(stu_list[n])
    print(stu_list)
    """
    [{'name': '小强', 'age': 20, 'score': 99, 'tel': '12348437006', 'sex': '女'}, 
    {'name': '小刚', 'age': 17, 'score': 96, 'tel': '12348437007', 'sex': '男'}, 
    {'name': '小罗', 'age': 21, 'score': 89, 'tel': '12348437004', 'sex': '男'}, 
    {'name': '小华', 'age': 17, 'score': 59, 'tel': '12348437008', 'sex': '男'}]
    """
    

    3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
    a. 求选课学生总共有多少人
    b. 求只选了第一个学科的人的数量和对应的名字
    c. 求只选了一门学科的学生的数量和对应的名字
    d. 求只选了两门学科的学生的数量和对应的名字
    e. 求选了三门学生的学生的数量和对应的名字

    class1 = ['Bob', 'Gerry', 'Alice', 'Beytagh']
    class2 = ['Jack', 'Tom', 'Edward', 'Beytagh']
    class3 = ['Tony', 'Jones', 'Alice', 'Beytagh']
    print(len(set(class1 + class2 + class3)))   # 选课学生总共有多少人    9
    
    set1 = set(class1)
    set2 = set(class2)
    set3 = set(class3)
    new_set1 = set1.difference(set2, set3)
    print(new_set1, len(new_set1), '人只选了第一门课')      # {'Bob', 'Gerry'} 2 人只选了第一门课
    
    new_set2 = set2.difference(set1, set3)
    new_set3 = set3.difference(set1, set2)
    all_set = new_set1 | new_set2 | new_set3
    print(all_set, len(all_set), '人只选了一门课')      # {'Edward', 'Jack', 'Tom', 'Jones', 'Bob', 'Gerry', 'Tony'} 7 只选了一门课
    
    new_set1 = (set1 & set2).difference(set3)
    new_set2 = (set3 & set2).difference(set1)
    new_set3 = (set1 & set3).difference(set2)
    all_set = new_set1 | new_set2 | new_set3
    print(all_set, len(all_set), '人只选了两门课')     # {'Alice'} 1 人只选了两门课
    
    thr_set = set1 & set2 & set3
    print(thr_set, len(thr_set), '人选了三门课')      # {'Beytagh'} 1 人选了三门课
    

    相关文章

      网友评论

        本文标题:Day7 作业

        本文链接:https://www.haomeiwen.com/subject/szlorctx.html