day8-homework

2019-04-24

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15454554545}
print(dict1)

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 24, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 20, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
for item in student:
    if item['score'] < 60:
        count += 1
print('不及格的学生有%d个' % count)

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
print('不及格学生的名字和年龄:')
for item in student:
    if item['score'] < 60:
        print(item['name'], item['age'])

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
for item in student:
    if item['age'] < 18:
        count += 1
print('未成年学生有%d个' % count)

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': '15000000001'}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': '15000000002'}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': '15000000003'}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': '15000000018'}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': '15000000028'}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': '15000000006'}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
print('手机尾号是8的学生的名字:')
for item in student:
    if item['tel'][-1] == '8':
        print(item['name'], end=' ')
print()

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000018}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000028}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
sum1 = []
print('最高分的名字和年龄:')
for item in student:
    sum1.append(item['score'])
print(max(sum1), end=' ')
for item in student:
    if item['score'] == max(sum1):
        print(item['name'])

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

dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000018}
dict5 = {'name': '李旁边', 'age': 17, 'score': 92, 'tel': 15000000028}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
student1 = []
student1.append(dict1)
i = 1
# 把旧列表的元素插入到新列表的合适位置,使其有序
while i < len(student):
    j = len(student1) - 1
    count = 0
    while j >= 0:  # 从后往前遍历student1,找出比其中比i小的个数
        if student[i]['score'] > student1[j]['score']:
            count += 1
        j -= 1
    student1.insert(len(student1)-count, student[i])
    i += 1
for x in student1:
    print(x)

# 法2 直接插入
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
for x in range(1, len(student)):
    temp = student[x]
    index = x
    for y in range(x-1, -1, -1):
        # 这里用temp['score'],不用student[x]['score'],因为student在变。
        if temp['score'] > student[y]['score']:
            student[y+1] = student[y]
            index = y
    student[index] = temp

for x in student:
    print(x)

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

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

English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
print('选课学生共有%d人' % len(set(new_stu)))

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

English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
print('只选第一门课英语的人有:', end=' ')
count = 0
for index in range(len(English)):
    if new_stu.count(new_stu[index]) == 1:
        print(new_stu[index], end=' ')
        count += 1
print()
print('只选第一门课(英语)共有%d个人' % count)

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

English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
count = 0
print('只选一门学科的人有:', end=' ')
for item in new_stu:
    if new_stu.count(item) == 1:
        count += 1
        print(item, end=' ')
print()
print('只选一门学科的共有%d人' % count)

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

English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
stu1 = []
for item in new_stu:    # 统计选2门课的人存到new_stu
    if new_stu.count(item) == 2:
        stu1.append(item)
set1 = set(stu1)       # 除去重复的名字
print('只选两门学科的人有:', end=' ')
for x in set1:
    print(x, end=' ')
print()
print('只选两门学科的共有%d人' % (len(stu1)//2))

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

English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
stu1 = []
for item in new_stu:    # 统计选3门课的人存到new_stu
    if new_stu.count(item) == 3:
        stu1.append(item)
set1 = set(stu1)       # 除去重复的名字
print('选了三门学科的人有:', end=' ')
for x in set1:
    print(x, end=' ')
print()
print('选了三门学科的共有%d人' % (len(stu1)//3))

你可能感兴趣的:(day8-homework)