1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)
student = {'name': '张三', 'age': 17, 'grade': 80, 'tel': 14854245, 'gender': '男'}
print(student)
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
g.删除性别不明的所有学生
all_student = [{'name': '张三', 'age': 17, 'grade': 80, 'tel': 14854245, 'gender': '男'},
{'name': '李四', 'age': 16, 'grade': 40, 'tel': 15854231, 'gender': '男'},
{'name': '王二', 'age': 16, 'grade': 30, 'tel': 14854333, 'gender': '男'},
{'name': '黄玲', 'age': 17, 'grade': 90, 'tel': 14854348, 'gender': '女'},
{'name': '张林', 'age': 16, 'grade': 50, 'tel': 14854241, 'gender': '不明'},
{'name': '王可', 'age': 17, 'grade': 70, 'tel': 14854248, 'gender': '女'}]
# 统计不及格学生的个数
def student_fail(student_s):
count = 0
for student in student_s[:]:
if student['grade'] < 60:
count += 1
print('不及格学生人数为:', count)
print('=========================================================================')
# 打印不及格学生的名字和成绩
def print_fail(student_s):
print('不及格学生的名字和成绩:')
for student in student_s[:]:
if student['grade'] < 60:
print(student['name'], student['grade'])
print('=========================================================================')
# 统计未成年学生的个数
def count_nonage(student_s):
count = 0
for student in student_s[:]:
if student['age'] < 18:
count += 1
print('未成年学生人数为:', count)
print('=========================================================================')
# 打印手机尾号是8的学生的名字
def count_tel(student_s):
for student in student_s[:]:
if int((str(student['tel']))[-1]) == 8:
print(student['name'], '的手机尾号是8')
print('=========================================================================')
# 打印最高分和对应的学生的名字
def great_grade(student_s):
grade_high = 0
n = -1
for student in student_s[:]:
if student['grade'] > grade_high:
grade_high = student['grade']
for student in student_s[:]:
if grade_high == student['grade']:
print(student['name']+'的成绩是', grade_high, '分,是最高分。')
print('=========================================================================')
# 删除性别不明的所有学生
def del_student(student_s):
count = -1
s = 0
for student in student_s[:]:
count += 1
if student['gender'] == '不明':
s = count
del student_s[s]
for student in student_s:
print(student)
# 将列表按学生成绩从大到小排序
def arranges(student_s):
for index in range(len(student_s)):
for index2 in range(index+1, len(student_s)):
if student_s[index]['grade'] <= student_s[index2]['grade']:
student_s[index], student_s[index2] = student_s[index2], student_s[index]
for student in student_s:
print(student)
print('=========================================================================')
# for x in range(len(student_s)):
# print(student_s[x]['grade'])
student_fail(all_student)
print_fail(all_student)
count_nonage(all_student)
count_tel(all_student)
great_grade(all_student)
arranges(all_student)
del_student(all_student)
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字
class1 = {'小玲', '老王', '小李', '王城', '别书桓', '林云','李平'}
class2 = {'汪晓', '王城', '别书桓', '齐林', '飞奇', '林城'}
class3 = {'小玲', '老王', '小李', '王城', '别书桓', '齐林', '云飞', '林城', '赵三','孙二'}
# 求选课学生总共有多少人
def count_student(c1, c2, c3):
c = c1 | c2 | c3
print('参加选课的学生为:', len(c))
print('=================================================================================')
# 求只选了第一个学科的人的数量和对应的名字
def first1_class(c1, c2, c3):
c = c1 | c2 | c3
c_1 = c2 | c3
c_2 = c - c_1
num = len(c_2)
print('只选了第一个学科的人的数量:', num)
print('只选了第一个学科的人为:')
print(c_2)
print('=================================================================================')
# 求只选了一门学科的学生的数量和对应的名字
def just1_class(c1, c2, c3):
c = c1 | c2 | c3
c_1 = c - (c2 | c3)
c_2 = c - (c1 | c3)
c_3 = c - (c1 | c2)
num1 = len(c_1)
num2 = len(c_2)
num3 = len(c_3)
print('只选了一个学科的人的数量:', num1+num2+num3)
print('只选了一个学科的人为:')
c_all = c_1 | c_2 | c_3
print(c_all)
print('=================================================================================')
# 求只选了两门学科的学生的数量和对应的名字
def just2_class(c1, c2, c3):
c = c1 | c2 | c3
_c1 = c2 & c3
_c2 = c1 & c3
_c3 = c1 & c3
c_all = (_c1 | _c2 | _c3) - (c1 & c2 & c3)
print('只选了两个学科的人的数量:', len(c_all))
print('只选了两个学科的人为:')
print(c_all)
print('=================================================================================')
# 选了三门学科的学生的数量和对应的名字
def just3_class(c1, c2, c3):
c = c1 & c2 & c3
print('选了三个学科的学生的数量:', len(c))
print('选了三门学科的学生为:')
print(c)
print('=================================================================================')
count_student(class1, class2, class3)
first1_class(class1, class2, class3)
just1_class(class1, class2, class3)
just2_class(class1, class2, class3)
just3_class(class1, class2, class3)