day8-作业

day8-作业


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

stu_msg = {'name': '小明', 'age': 22, 'scores': 90, 'tel': '110-119'}

2. 声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)

stu_msg = [
    {'name': '小红', 'age': 15, 'scores': 50, 'tel': '110-118'},
    {'name': '小橙', 'age': 28, 'scores': 89, 'tel': '100-200'},
    {'name': '小黄', 'age': 18, 'scores': 75, 'tel': '001-001'},
    {'name': '小绿', 'age': 30, 'scores': 66, 'tel': '800-828'},
    {'name': '小青', 'age': 12, 'scores': 57, 'tel': '300-208'},
    {'name': '小蓝', 'age': 22, 'scores': 43, 'tel': '400-500'}
]
  • a.统计不及格学生的个数
count = 0
for stu_dict in stu_msg:
    if stu_dict['scores'] < 60:
        count += 1
print('不及格学生:%d' % count)
  • b.打印不及格学生的名字和对应的成绩
for stu_dict in stu_msg:
    if stu_dict['scores'] < 60:
        print('不及格的学生姓名:%s,分数:%d' % (stu_dict['name'], stu_dict['scores']))
  • c.统计未成年学生的个数
count = 0
for stu_dict in stu_msg:
    if stu_dict['age'] < 18:
        count += 1
print('未成年学生人数:%d' % count)
  • d.打印手机尾号是8的学生的名字
for stu_dict in stu_msg:
    if stu_dict['tel'][-1] == '8':
        print('手机尾号为8的学生名字:%s' % stu_dict['name'])
  • e.打印最高分和对应的学生的名字
max1 = stu_msg[0]['scores']
for stu_dict in stu_msg[1:]:
    if stu_dict['scores'] > max1:
        max1 = stu_dict['scores']
for stu_dict in stu_msg:
    if max1 == stu_dict['scores']:
        print('最高分学生名字:%s,最高分:%d' % (stu_dict['name'], max1))
  • f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
# 方法一:选择排序法
length = len(stu_msg)
for i in range(length - 1):
    for j in range(i+1, length):
        if stu_msg[j]['scores'] > stu_msg[i]['scores']:
            stu_msg[i], stu_msg[j] = stu_msg[j], stu_msg[i]
print(stu_msg)
# 方法二:冒泡排序法
length = len(stu_msg)
for x in range(length - 1):
    for i in range(length - x - 1):
        j = i + 1
        if stu_msg[j]['scores'] > stu_msg[i]['scores']:
            stu_msg[i], stu_msg[j] = stu_msg[j], stu_msg[i]
print(stu_msg)

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

course1 = ['小明', '小红', '小黄', '小蓝', '蔡徐坤']
course2 = ['小紫', '蔡徐坤', '小红', '小青', '小绿']
course3 = ['蔡徐坤', '小蓝', '小青', '小橙']
  • a. 求选课学生总共有多少人
sum1 = len(set(course1) | set(course2) | set(course3))
print('选课人数总共有:%d' % sum1)
  • b. 求只选了第一个学科的人的数量和对应的名字
choice = set(course1) - (set(course3) | set(course2))
print('只选了第一学科人数:%d,对应的名字:%s' % (len(choice), choice))
  • c. 求只选了一门学科的学生的数量和对应的名字
set1, set2, set3 = set(course1), set(course2), set(course3)
choice1 = set1 ^ set2 ^ set3
print('只选了一门学科的人数:%d,名字:%s' % (len(choice1), choice1))
  • d. 求只选了两门学科的学生的数量和对应的名字
choice2 = set()
set1, set2, set3 = set(course1), set(course2), set(course3)
set4 = set1 & set2 & set3
choice2.update((set1 & set2) - set4)
choice2.update((set1 & set3) - set4)
choice2.update((set2 & set3) - set4)
print('只选了两门学科学生人数:%d,名字:%s' % (len(choice2), choice2))
  • e. 求选了三门学生的学生的数量和对应的名字
set1, set2, set3 = set(course1), set(course2), set(course3)
set5 = set1 & set2 & set3
print('选了三门学科人数:%d,名字:%s' % (len(set5), set5))

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