实操

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

student_dict = {'name': '香蕉君', 'age': 18, 'score': 100, 'telephone': 9090999}

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

a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)

student_list = [{'name': '香蕉君', 'age': 18, 'score': 96, 'telephone': '9090999'},
                {'name': '苹果君', 'age': 16, 'score': 49, 'telephone': '8080888'},
                {'name': '梨子君', 'age': 17, 'score': 98, 'telephone': '7070777'},
                {'name': '西瓜君', 'age': 21, 'score': 57, 'telephone': '6060666'},
                {'name': '菠萝君', 'age': 17, 'score': 96, 'telephone': '5050555'},
                {'name': '芒果君', 'age': 23, 'score': 55, 'telephone': '4040444'},
                ]
# a.统计不及格学生的个数
count = 0
for stu in student_list:
    if stu['score'] < 60:
        count += 1
print('a.不及格学生的个数:', count)

# b.打印不及格学生的名字和对应的成绩
for stu in student_list:
    if stu['score'] < 60:
        print('b.%s不及格,成绩为%d'%(stu['name'], stu['score']))

# c.统计未成年学生的个数
count1 = 0
for stu in student_list:
    if stu['age'] < 18:
        count1 += 1
print('c.未成年学生的个数为:', count1)

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

# e.打印最高分和对应的学生的名字
max_score = student_list[0]['score']
index = -1
score_list = []
for stu in student_list:
    score_list.append(stu['score'])
for stu in student_list:
    index += 1
    if max(score_list) == stu['score']:
        print('e.最高分%d和对应的学生的名字是:%s'%(max(score_list), student_list[index]['name']))
        break

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

for stu in student_list:
    score_list1.append(stu['score'])
score_list1.sort(reverse=True)
score_number_list = []

index = 0

temp = True
while temp:
    max_score = score_list1[index]
    for stu in student_list:
        if stu['score'] == max_score:
            score_number_list.append(stu)
            index += 1
        if len(score_number_list) == len(student_list):
            temp = False
print('f.列表按学生成绩从大到小排序为:', score_number_list)

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

a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字

# a. 求选课学生总共有多少人
math_list = ['张三', '李四', '王五', '刘八']
chinese_list = ['张三', '李四', '王五', '小明']
english_list = ['李四', '王五', '小明', '小红']
all_list1 = [math_list, chinese_list, english_list]
all_list = math_list + chinese_list + english_list
print('a.选课学生总共有%d人:' % len(set(all_list)))

# b. 求只选了第一个学科的人的数量和对应的名字
simple_list1 = []
for stu in math_list:
    if stu not in chinese_list and stu not in english_list:
        simple_list1.append(stu)
print('b.只选了第一个学科的人的数量为%d和对应的名字分别为:%s' % (len(simple_list1), *simple_list1))

# c. 求只选了一门学科的学生的数量和对应的名字
simple_list = []
for stu in math_list:
    if stu not in chinese_list and stu not in english_list:
        simple_list.append(stu)
for stu in chinese_list:
    if stu not in math_list and stu not in english_list:
        simple_list.append(stu)
for stu in english_list:
    if stu not in chinese_list and stu not in math_list:
        simple_list.append(stu)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便
"""
print('c.只选了一门学科的人的数量为%d,分别是%s,%s' % (len(simple_list), *simple_list))

# d. 求只选了两门学科的学生的数量和对应的名字
all_list = math_list + chinese_list + english_list
temp_2 = []
for name in set(all_list):
    if all_list.count(name) == 2:
        temp_2.append(name)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便
"""
print('d.只选了两门学科的学生的数量为%d和对应的名字%s,%s' % (len(temp_2), *temp_2))

# e. 求选了三门学生的学生的数量和对应的名字
all_list = math_list + chinese_list + english_list
temp_3 = []
for name in set(all_list):
    if all_list.count(name) == 3:
        temp_3.append(name)
"""
注意:这里输出的第二个变量是我在首先用len函数判断出列表长度之后,
才确定的占位符数量,可以灵位写个循环输出姓名或者另外判断再输出,
这里只是为了方便本题
"""
print('e.只选了两门学科的学生的数量为%d和对应的名字%s,%s' % (len(temp_3), *temp_3))

你可能感兴趣的:(实操)