2019-07-30day7作业

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

dict_stu = {
    'stu1': {'name': '杨斌', 'age': 22, 'grade': 86, 'phone': '11566545898', 'gender': '女'},
    'stu2': {'name': '徐刚', 'age': 21, 'grade': 50, 'phone': '13154565461', 'gender': '男'},
    'stu3': {'name': '王力', 'age': 23, 'grade': 99.5, 'phone': '18888888888', 'gender': '男'},
    'stu4': {'name': '喵源', 'age': 24, 'grade': 80, 'phone': '13454587845', 'gender': '男'},
    'stu5': {'name': '杨俊明', 'age': 20, 'grade': 32, 'phone': '14578454554', 'gender': '女'},
    'stu6': {'name': '王雷', 'age': 25, 'grade': 88, 'phone': '12354587845', 'gender': '男'},
    'stu7': {'name': '孙悟空', 'age': 8000, 'grade': 0, 'phone': 'None', 'gender': '猴'},
}

2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数

n = 0
for stu in dict_stu:
    if dict_stu[stu]['grade'] < 60:
        n += 1
print(n)

b.打印不及格学生的名字和对应的成绩

for stu in dict_stu:
    if dict_stu[stu]['grade'] < 60:
        print(dict_stu[stu]['name'],dict_stu[stu]['grade'])

c.统计未成年学生的个数

m = 0
for stu in dict_stu:
    if dict_stu[stu]['age'] < 18:
        m += 1
print(m)

d.打印手机尾号是8的学生的名字

phone_8 = None
for stu in dict_stu:
    if (dict_stu[stu]['phone'])[-1] == '8':
        phone_8 = dict_stu[stu]['phone']
        print(dict_stu[stu]['name'], phone_8)

e.打印最高分和对应的学生的名字

max_grade = 0
for stu in dict_stu:
    if dict_stu[stu]['grade'] > max_grade:
        max_grade = dict_stu[stu]['grade']
for stu in dict_stu:
    if dict_stu[stu]['grade'] == max_grade:
        print(dict_stu[stu]['name'], max_grade)

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

list_grade = []
for stu in dict_stu:
    a = dict_stu[stu]['grade']
    list_grade.append(a)
list_grade.sort(reverse=True)
print(list_grade)

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

dict_stu = [
    {'name': '杨斌', 'age': 22, 'grade': 86, 'phone': '11566545898', 'gender': '女'},
    {'name': '徐刚', 'age': 21, 'grade': 50, 'phone': '13154565461', 'gender': '男'},
    {'name': '王力', 'age': 23, 'grade': 99.5, 'phone': '18888888888', 'gender': '男'},
    {'name': '喵源', 'age': 24, 'grade': 80, 'phone': '13454587845', 'gender': '男'},
    {'name': '杨俊明', 'age': 20, 'grade': 32, 'phone': '14578454554', 'gender': '女'},
    {'name': '王雷', 'age': 25, 'grade': 88, 'phone': '12354587845', 'gender': '男'},
    {'name': '孙悟空', 'age': 8000, 'grade': 0, 'phone': 'None', 'gender': '猴'},
]
for stu in dict_stu:
    if (stu['gender'] != '男') and (stu['gender'] != '女'):
        del dict_stu[dict_stu.index(stu)]
print(dict_stu)

3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)

history_class = ['徐刚', '王力', '苗源', '高中天', '杨俊明', '王雷', '王力宏']
science_class = ['杨斌', '苗源', '高中天', '王雷']
animo_class = [ '徐刚', '王力', '高中天', '杨俊明']

h = set(history_class)
s = set(science_class)
a = set(animo_class)

a. 求选课学生总共有多少人

stu = h | s | a
print(len(stu))

b. 求只选了第一个学科的人的数量和对应的名字

print(h - a - s)

c. 求只选了一门学科的学生的数量和对应的名字

n = 0
for stu1 in h:
    if stu1 not in s:
        if stu1 not in a:
            n += 1
            print(stu1)
for stu2 in s:
    if stu2 not in h:
        if stu2 not in a:
            n += 1
            print(stu2)
for stu3 in a:
    if stu3 not in h:
        if stu3 not in s:
            n += 1
            print(stu3)
print('共有,', n, '人')
print((h - s - a) | (s - h - a) | (a - h - s),len((h - s - a) | (s - h - a) | (a - h - s)))

d. 求只选了两门学科的学生的数量和对应的名字

print((h & s - a) | (h & a -s) | (a & s -h),len(print((h & s - a) | (h & a -s) | (a & s -h)))

e. 求选了三门学生的学生的数量和对应的名字

print(h & a & s,len(h & a & s))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。