人生苦短,我学python day07 字典和集合作业

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

stu = {'name': 'stu1', 'age': 18, 'score': 100, 'tel': '17728162254'', 'sex': '女'}

2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
​ a.统计不及格学生的个数
​ b.打印不及格学生的名字和对应的成绩
​ c.统计未成年学生的个数
​ d.打印手机尾号是8的学生的名字
​ e.打印最高分和对应的学生的名字

​ f.删除性别不明的所有学生

​ g.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

stu_list = [
    {'name': 'stu1', 'age': 18, 'score': 100, 'tel': '17728162254', 'sex': '男'},
    {'name': 'stu2', 'age': 15, 'score': 45, 'tel': '17728162256', 'sex': '女'},
    {'name': 'stu3', 'age': 19, 'score': 85, 'tel': '17728162258', 'sex': '不明'},
    {'name': 'stu4', 'age': 16, 'score': 56, 'tel': '17728162255', 'sex': '女'},
    {'name': 'stu5', 'age': 20, 'score': 79, 'tel': '17728162251', 'sex': '男'},
    {'name': 'stu6', 'age': 17, 'score': 89, 'tel': '17728162258', 'sex': '女'}
]

count_fail = 0          # 不及格学生个数
count_immaturity = 0    # 未成年学生的个数
for stu in stu_list:
    # a.统计不及格学生的个数
    # b.打印不及格学生的名字和对应的成绩
    if stu['score'] < 60:
        count_fail += 1
        print(stu['name'], '同学的成绩不及格,是:', stu['score'])
    # c.统计未成年学生的个数
    if stu['age'] < 18:
        count_immaturity += 1
    # d.打印手机尾号是8的学生的名字
    if int(stu['tel']) % 10 == 8:
        print(stu['name'], '同学的手机尾号是8')
print('不及格学生的个数:', count_fail)
print('未成年学生的个数', count_immaturity)

score_list = [x['score'] for x in stu_list]     # 定义列表变量score_list保存所有成绩
score_list.sort(reverse=True)                   # 将成绩从大到小排列
stu_list1 = []                                  # 定义列表stu_list1保存按学生成绩从大到小排序

# e.打印最高分和对应的学生的名字
for stu in stu_list:
    if stu['score'] == score_list[0]:
        print('最高分的学生是:', stu['name'])
    if stu['score'] == score_list[-1]:
        print('最低分的学生是:', stu['name'])

# g.将列表按学生成绩从大到小排序
# 方法一:
for score in score_list:
    for stu in stu_list:
        if stu['score'] == score:
            stu_list1.append(stu)
            break
print(stu_list1)

# 方法二:
stu_list2 = [stu for score in score_list for stu in stu_list if stu['score'] == score]
print(stu_list2)

# f.删除性别不明的所有学生
# 方法一:
stu_sex = []
for stu in stu_list:
    if stu['sex'] != '不明':
        stu_sex.append(stu)
print(stu_sex)

# 方法二:
stu_sex2 = [stu for stu in stu_list if stu['sex'] != '不明']
print(stu_sex2)

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

subject1 = {'stu1', 'stu2', 'stu3', 'stu4', 'stu5', 'stu8'}
subject2 = {'stu5', 'stu2', 'stu1', 'stu7', 'stu4'}
subject3 = {'stu1', 'stu6', 'stu7', 'stu4', 'stu5', 'stu9'}
subject = subject1 | subject2 | subject3
print(subject)

# a. 求选课学生总共有多少人
print('选课学生总人数是:', len(subject))

# b. 求只选了第一个学科的人的数量和对应的名字
subject_only = subject1 - subject2 - subject3
print('只选了第一个学科的人的数量和对应的名字:', len(subject_only), subject_only)

# c. 求只选了一门学科的学生的数量和对应的名字
subject_only1 = ((subject1 ^ subject2) - subject3) | ((subject1 ^ subject3) - subject2)
print('只选了一门学科的学生的数量和对应的名字:', len(subject_only1), subject_only1)

# d. 求只选了两门学科的学生的数量和对应的名字
subject_only2 = (subject1 & subject2 - subject3) | (subject1 & subject3 - subject2) | (subject2 & subject3 - subject1)
print('只选了两门学科的学生的数量和对应的名字:', len(subject_only2), subject_only2)

# e. 求选了三门学生的学生的数量和对应的名字
subject_both = subject1 & subject2 & subject3
print('选了三门学生的学生的数量和对应的名字:', len(subject_both), subject_both)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值