Day8—元祖字典集合 homework

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

stu1 = {'name': '张一', 'age': 16, 'score': 78, 'phone': '13344441119'}
stu2 = {'name': '张二', 'age': 19, 'score': 21, 'phone': '13344442228'}
stu3 = {'name': '张三', 'age': 17, 'score': 33, 'phone': '13344443337'}
stu4 = {'name': '张四', 'age': 21, 'score': 67, 'phone': '13344444446'}
stu5 = {'name': '张五', 'age': 18, 'score': 71, 'phone': '13344445555'}
stu6 = {'name': '张六', 'age': 19, 'score': 97, 'phone': '13344446664'}

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

all_stu = [stu1, stu2, stu3, stu4, stu5, stu6]

a.统计不及格学生的个数

count = 0
for stu in all_stu:
    if stu['score'] < 60:
        count += 1
print('不及格学生的个数:', count)

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

print('不及格学生名字、成绩:')
for stu in all_stu:
    if stu['score'] < 60:
        print(stu['name'], stu['score'])

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

count = 0
for stu in all_stu:
    if stu['age'] < 18:
        count += 1
print('未成年学生的个数:', count)

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

for stu in all_stu:
    if stu['phone'][10] == '8':
        print('手机尾号是8的学生:', stu['name'])

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

scores = []
for stu in all_stu:
    scores.append(stu['score'])
print('最高分学生:', all_stu[scores.index(max(scores))]['name'], max(scores))

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

scores = []
for stu in all_stu:
    scores.append(stu['score'])
# sorted(序列)  排序的时候不修改原序列,产生新的序列
new_scores = sorted(scores, reverse=True)
print(new_scores)  
seq_stu = []
for sco in new_scores:
    seq_stu.append(all_stu[scores.index(sco)])
print(seq_stu)

选择排序:让前面的数一次和后面的每一个数比较大小,如果后面比前面的数大就交换位置。 整个过程执行 长度-1 次

nums = [3, 4, 5, 6, 7]
l = len(nums)
# i是前面的数的下标
for i in range(0, l-1):
    # j是前面数后边的每一个数
    for j in range(i+1, l):
        # 后面的数比前面的大
        if nums[j] > nums[i]:
            # 两个数交换位置
            nums[i], nums[j] = nums[j], nums[i]
print(nums)
l = len(all_stu)
for i in range(0, l-1):
    for j in range(i+1, l):
        if all_stu[j]['score'] > all_stu[i]['score']:
            all_stu[i], all_stu[j] = all_stu[j], all_stu[i]
print(all_stu)

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

chinese = {'凛', '律', '鸣', '叶', '陆', '绿', '空', '白'}
math = {'凛', '律', '优', '梓', '澪', '柚', '松', '柏'}
english = {'凛', '鸣', '红', '唯', '澪', '空', '白', '堇'}

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

nums = chinese | math | english
print('选课学生总共有多少人:', len(nums))

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

only_chinese = nums - math - english
print('只选了第一个学科的人的数量和对应的名字:', len(only_chinese), only_chinese)

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

only_math = nums - chinese - english
only_english = nums - math - chinese
one = only_chinese | only_english | only_math
print('只选了一门学科的学生的数量和对应的名字:', len(one), one)

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

c_and_m = chinese & math
c_and_e = chinese & english
m_and_e = math & english
three = chinese & math & english
tow = (c_and_m | c_and_e | m_and_e) - three
tow1 = nums - one - three
print('只选了两门学科的学生的数量和对应的名字:', len(tow), tow)

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

three = chinese & math & english
print('三门学生的学生的数量和对应的名字:', len(three), three)

你可能感兴趣的:(Day8—元祖字典集合 homework)