day6作业

本文通过Python实现了一个学生信息管理系统,包括统计不及格、未成年学生,筛选特定条件的学生等操作。此外,还分析了一个选课系统,计算选课学生数量,查找只选特定数量课程的学生。内容涵盖了数据处理、条件判断和列表操作等Python基础知识。
摘要由CSDN通过智能技术生成

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

message = {'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'}

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

messages = [{'name': '小红', 'age': 17, 'grade': 86, 'tel': '18692852958', 'gender': '女'},
            {'name': '小明', 'age': 18, 'grade': 84, 'tel': '18626474839', 'gender': '不明'},
            {'name': '小刚', 'age': 18, 'grade': 43, 'tel': '18798237925', 'gender': '男'},
            {'name': '小绿', 'age': 17, 'grade': 93, 'tel': '18684923808', 'gender': '不明'},
            {'name': '小王', 'age': 19, 'grade': 54, 'tel': '18660285033', 'gender': '男'},
            {'name': '小花', 'age': 16, 'grade': 69, 'tel': '18637928578', 'gender': '女'}]
# a.统计不及格学生的个数
count_1 = 0
for x in messages:
    if x['grade'] < 60:
        count_1 += 1
print('不及格学生的个数:', count_1)
# 不及格学生的个数: 2

# b.打印不及格学生的名字和对应的成绩
for x in messages:
    if x['grade'] < 60:
        print(x['name'], x['grade'])
# 小刚 43
# 小王 54

# c.统计未成年学生的个数
count_2 = 0
for i in messages:
    if i['age'] < 18:
        count_2 += 1
print('未成年学生的个数:', count_2)
# 未成年学生的个数: 3

# d.打印手机尾号是8的学生的名字
for i in messages:
    if int(i['tel']) % 10 == 8:
        print('手机尾号是8的学生的名字:', i['name'])
# 手机尾号是8的学生的名字: 小红
# 手机尾号是8的学生的名字: 小绿
# 手机尾号是8的学生的名字: 小花

# e.打印最高分和对应的学生的名字
max_grade = 0
for i in messages:
    if i['grade'] > max_grade:
        max_grade = i['grade']
for i in messages:
    if i['grade'] == max_grade:
        print('最高分:', max_grade, '姓名:', i['name'])
# 最高分: 93 姓名: 小绿

# f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
i = 0
for x in range(len(messages) - 1):
    for y in range(i + 1, len(messages)):
        if messages[x]['grade'] < messages[y]['grade']:
            messages[x], messages[y] = messages[y], messages[x]
     i += 1
print(messages)
[{'name': '小绿', 'age': 17, 'grade': 93, 'tel': 18684923808, 'gender': '不明'},
 {'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'}, 
 {'name': '小明', 'age': 18, 'grade': 84, 'tel': 18626474839, 'gender': '不明'}, 
 {'name': '小王', 'age': 19, 'grade': 54, 'tel': 18660285033, 'gender': '男'}, 
 {'name': '小刚', 'age': 18, 'grade': 43, 'tel': 18798237925, 'gender': '男'}, 
 {'name': '小花', 'age': 16, 'grade': 69, 'tel': 18637928578, 'gender': '女'}]
# g.删除性别不明的所有学生
for i in messages[:]:
    if i['gender'] != '男' and i['gender'] != '女':
        messages.remove(i)
print(messages)
# [{'name': '小红', 'age': 17, 'grade': 86, 'tel': 18692852958, 'gender': '女'},
#  {'name': '小刚', 'age': 18, 'grade': 43, 'tel': 18798237925, 'gender': '男'},
#  {'name': '小王', 'age': 19, 'grade': 54, 'tel': 18660285033, 'gender': '男'},
#  {'name': '小花', 'age': 16, 'grade': 69, 'tel': 18637928578, 'gender': '女'}]

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

Chinese = ['小红', '小刚', '小明', '小花']
Math = ['小强', '小明', '小花']
English = ['小明', '小刚', '小兰']

# a. 求选课学生总共有多少人
A = Chinese + Math + English
B = []
for i in A:
    if i not in B:
        B.append(i)
print('选课学生总人数:', len(B))
# 选课学生总人数: 6

# b. 求只选了第一个学科的人的数量和对应的名字
count = 0
for i in Chinese:
    if i not in Math and i not in English:
        print(i)
        count += 1
print('只选了第一个学科的人数:', count)
# 小红
# 只选了第一个学科的人数: 1

# c. 求只选了一门学科的学生的数量和对应的名字
B = []
for i in A:
    if A.count(i) == 1 and i not in B:
        print(i)
        B.append(i)
print('只选了一门学科的学生人数:', len(B))
# 小红
# 小强
# 小兰
# 只选了一门学科的学生人数: 3

# d. 求只选了两门学科的学生的数量和对应的名字
B = []
for i in A:
    if A.count(i) == 2 and i not in B:
        print(i)
        B.append(i)
print('只选了两门学科的学生人数:', len(B))
# 小刚
# 小花
# 只选了两门学科的学生人数: 2

# e. 求选了三门学生的学生的数量和对应的名字
B = []
for i in A:
    if A.count(i) == 3 and i not in B:
        print(i)
        B.append(i)
print('选了三门学科的学生人数:', len(B))
# 小明
# 选了三门学科的学生人数: 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值