2021-5-7 作业

这篇博客探讨了如何使用Python管理学生信息,包括存储姓名、年龄、成绩、电话和性别。主要内容包括统计不及格和未成年学生数量,显示不及格学生的详细信息,查找手机尾号为8的学生,确定最高分学生,处理性别不明的学生,按成绩排序列表,以及使用集合处理多门学科选课情况,如选课人数统计和各类选课情况分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    students = [
        {'姓名':'小明','年龄':20,'成绩':100,'电话':102311111,'性别':'男',},
        {'姓名':'小日','年龄':10,'成绩':80,'电话':102322228,'性别':'不明',},
        {'姓名':'小月','年龄':12,'成绩':90,'电话':102333333,'性别':'女',},
        {'姓名':'小红','年龄':13,'成绩':92,'电话':102344448,'性别':'女',},
        {'姓名':'小绿','年龄':14,'成绩':90,'电话':102355555,'性别':'男',},
        {'姓名':'小蓝','年龄':17,'成绩':50,'电话':102366666,'性别':'男',},
    ]
    
    1. 统计不及格学生的个数
    count = 0
    for x in students:
        if x['成绩'] < 60:
            count += 1
    print(count)
    
    1. 打印不及格学生的名字和对应的成绩
for x in students:
    if x['成绩'] < 60:
        print(x['姓名'],x['成绩'])
  1. 统计未成年学生的个数
count = 0
for x in students:
    if x['年龄'] < 18:
        count += 1
print(count)
  1. 打印手机尾号是8的学生的名字
for x in students:
    if x['电话'] % 10 == 8:
        print(x['姓名'])
  1. 打印最高分和对应的学生的名字
score = 0
for x in students:
    if x['成绩'] > score:
        score = x['成绩']
for x in students:
    if x['成绩'] == score:
        print(x['姓名'],score)
  1. 删除性别不明的所有学生
for x in students:
    if x['性别'] =='不明':
        students.remove(x)
print(students)
  1. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
cj = [x['成绩'] for x in students]
new_list = sorted(cj,reverse=True)
cj1 = []
for x in students:
    for i in new_list:
        if i == x['成绩']:
            cj1.append(x)
print(cj1)
  1. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
    1. 求选课学生总共有多少人
    2. 求只选了第一个学科的人的数量和对应的名字
    3. 求只选了一门学科的学生的数量和对应的名字
    4. 求只选了两门学科的学生的数量和对应的名字
    5. 求选了三门学生的学生的数量和对应的名字
eng = {'青龙','白虎','朱雀','玄武','穷奇','饕鬄','麒麟','貔貅'}
mat = {'青龙','白虎','朱雀','玄武','穷奇'}
lang = {'玄武','穷奇','饕鬄'}
# 1. 求选课学生总共有多少人
print(len(eng | mat | lang))
# 2. 求只选了第一个学科的人的数量和对应的名字
print(len(eng),eng)
# 3. 求只选了一门学科的学生的数量和对应的名字
print(len(eng - mat -lang),eng - mat -lang)
# 4. 求只选了两门学科的学生的数量和对应的名字
print(len(eng & mat - lang),eng & mat - lang)
# 5. 求选了三门学生的学生的数量和对应的名字
print(len(eng & mat & lang),eng & mat & lang)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值