美文网首页
作业006:字典和集合

作业006:字典和集合

作者: yydafx | 来源:发表于2019-11-13 09:17 被阅读0次

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

students = {
    'name': '张三',
    'age': 18,
    'score': 89,
    'tel': 15121445277,
    'sex': '男'
}

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

all_students = [
    { 'name': '张三','age': 21,'score': 89,'tel': '15121445271', 'sex': '男'},
    { 'name': '李四','age': 14,'score': 56,'tel': '15121445277', 'sex': '男'},
    { 'name': '王五','age': 19,'score': 70,'tel': '15121445278', 'sex': '女'},
    { 'name': '香香','age': 18,'score': 98,'tel': '15121445275', 'sex': '女'},
    { 'name': '七星','age': 16,'score': 43,'tel': '15121445274', 'sex': '男'},
    { 'name': '八卦','age': 23,'score': 78,'tel': '15121445272', 'sex': '不明'},
]

# a.统计不及格学生的个数
# b.打印不及格学生的名字和对应的成绩
# c.统计未成年学生的个数
count = 0
ag = 0
print('不及格学生的名字和对应的成绩:', end=' ')
for student in all_students:
    if student['score'] < 60:
        count += 1
        print(student['name'],student['score'], end=' ')
    if student['age'] < 18:
        ag += 1
print()
print('不及格学生的个数:', count)
print('未成年学生的个数:', ag)



# d.打印手机尾号是8的学生的名字
for student in all_students:
    if list(student['tel'])[-1] == '8':
        print('手机尾号是8的学生的名字:',student['name'])



# e.打印最高分和对应的学生的名字
# 情况1:只有一个最高分
# max1 = all_students[0]
# for student in all_students:
#     if student['score'] > max1['score']:
#         max1 = student
# print(max1['score'], max1['name'])

# 情况2:有多个最高分
max_score = all_students[0]['score']    # 最大分数
max_student = [all_students[0]['name']]     # 最高分对应的学生的名字
for student in all_students[1:]:
    if student['score'] == max_score:
        # 如果低于默认最高分,最高分就是最高分
        max_student.append(student['name'])
    elif student['score'] > max_score:
        # 如果取出来的大于默认最高分,就把分数更新,把原来列表的名字清除,再加入最高分的姓名
        max_score = student['score']
        max_student.clear()
        max_student.append(student['name'])
print('最高分:{},对应学生:{}'.format(max_score, str(max_student)[1: -1]))




# f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
# 方法1:高阶函数
# all_students.sort(reverse=True, key=lambda item: item['score'])
# print(all_students)


# 方法2:选择排序
'''
第一轮:获取整个序列中最小值放在第一个位置
第二轮:从第二个位置开始选择第二小的值放在第二位
以此类推...
'''
length = len(all_students)
for index1 in range(length - 1):
    for index2 in range(index1+1, length):
        if all_students[index2]['score'] > all_students[index1]['score']:
            all_students[index1], all_students[index2] = all_students[index2], all_students[index1]
print(all_students)




# g.删除性别不明的所有学生
count = 0
for student in all_students[:]:
    if student['sex'] == '不明':
        del all_students[count]
        count -= 1
    count += 1
print(all_students)

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

students1 = {'墨子', '小乔', '上官婉儿', '扁鹊', '诸葛亮', '赵云'}
students2 = {'上官婉儿', '猴子', '赵云', '李白', '凯'}
students3 = {'凯', '墨子', '上官婉儿', '后裔', '猴子', '扁鹊', '赵云'}

# a. 求选课学生总共有多少人
count = 0
all_students = students1 | students2 | students3
for student in all_students:
    count += 1
print('选课学生总共有多少人', count)



# b.求只选了第一个学科的人的数量和对应的名字
count = 0
all_students = students1 - students2 - students3
print('只选了第一个学科的学生的名字:', end=' ')
for students in all_students:
    count += 1
    print(students, end=', ')
print()
print('只选了第一个学科的学生的数量:', count)



# c. 求只选了一门学科的学生的数量和对应的名字
count = 0
all_students = list((students1 - students2 - students3)) + list((students2 - students1 - students3)) + list((students3 - students2 - students1))
print('只选了一门学科的学生的名字:', end=' ')
for students in all_students:
    count += 1
    print(students, end=', ')
print()
print('只选了一门学科的学生的数量:', count)



# d.求只选了两门学科的学生的数量和对应的名字
count = 0
all_students = list((students1 & students2 - students3)) + list((students1 & students3 - students2)) + list((students3 & students2 - students1))
print('只选了两门学科的学生的名字:', end=' ')
for students in all_students:
    count += 1
    print(students, end=', ')
print()
print('只选了两门学科的学生的数量:', count)



# e. 求选了三门学生的学生的数量和对应的名字
count = 0
all_students = (students1 & students2 & students3)
print('只选了三门学科的学生的名字:', end=' ')
for students in all_students:
    count += 1
    print(students, end=', ')
print()
print('只选了三门学科的学生的数量:', count)

相关文章

  • 作业006:字典和集合

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

  • 2. 字典和集合

    字典和集合相比于列表和元组,字典和集合的性能更优:主要体现在查找、增加和删除操作; 1. 字典和集合基础 字典是一...

  • 6 字典和集合——《Swift3.0从入门到出家》原创连载

    6 字典和集合——《Swift3.0从入门到出家》 字典和集合 字典 字典是集合类型存放多个键值对,其中键是唯一的...

  • Python字典和集合

    字典和集合的定义 字典:字典是由一系列键(key)和值(value)配对组成的元素的集合集合:和字典基本相同,唯一...

  • 【第11天】python全栈从入门到放弃

    1.字典和集合 集合是没有values的字典,集合和字典的key都必须不可变且可哈希 2. range和rando...

  • 走进 Typescript 数据结构(字典)

    集合、字典和散列表可以存储不重复的值。字典和集合相似,集合以[值,值]的形式存储元素,字典是以[键,值]的形式来存...

  • 字典和集合

    dict : key:不可变(可哈希)的数据类型 value:任意数据类型,对象。 大量的数据,关系型数据。查...

  • 字典和集合

    下面我们讨论Python基本数据类型中的字典和集合。 6.1 字典 我们都使用过汉语字典,它的原理是对汉语中的每个...

  • 字典和集合

    参考《Fluent Python》字典和集合 集合的本质是唯一元素的聚集,所以集合可以用来去重 集合也支持一些基础...

  • #抬抬小手学Python# 说完列表说字典,说完字典说集合

    字典与集合那些事儿 字典和集合为何总要放在一起,说来也巧,就是因为它们都用大括号 {} 包裹。 字典和集合那些基础...

网友评论

      本文标题:作业006:字典和集合

      本文链接:https://www.haomeiwen.com/subject/tazqictx.html