2019-04-24
1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15454554545}
print(dict1)
2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)
a.统计不及格学生的个数
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 24, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 20, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
for item in student:
if item['score'] < 60:
count += 1
print('不及格的学生有%d个' % count)
b.打印不及格学生的名字和对应的成绩
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
print('不及格学生的名字和年龄:')
for item in student:
if item['score'] < 60:
print(item['name'], item['age'])
c.统计未成年学生的个数
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
for item in student:
if item['age'] < 18:
count += 1
print('未成年学生有%d个' % count)
d.打印手机尾号是8的学生的名字
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': '15000000001'}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': '15000000002'}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': '15000000003'}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': '15000000018'}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': '15000000028'}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': '15000000006'}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
count = 0
print('手机尾号是8的学生的名字:')
for item in student:
if item['tel'][-1] == '8':
print(item['name'], end=' ')
print()
e.打印最高分和对应的学生的名字
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000018}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000028}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
sum1 = []
print('最高分的名字和年龄:')
for item in student:
sum1.append(item['score'])
print(max(sum1), end=' ')
for item in student:
if item['score'] == max(sum1):
print(item['name'])
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000018}
dict5 = {'name': '李旁边', 'age': 17, 'score': 92, 'tel': 15000000028}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
student1 = []
student1.append(dict1)
i = 1
# 把旧列表的元素插入到新列表的合适位置,使其有序
while i < len(student):
j = len(student1) - 1
count = 0
while j >= 0: # 从后往前遍历student1,找出比其中比i小的个数
if student[i]['score'] > student1[j]['score']:
count += 1
j -= 1
student1.insert(len(student1)-count, student[i])
i += 1
for x in student1:
print(x)
# 法2 直接插入
dict1 = {'name': '雍新有', 'age': 23, 'score': 91, 'tel': 15000000001}
dict2 = {'name': '沈不冷', 'age': 22, 'score': 60, 'tel': 15000000002}
dict3 = {'name': '燕赵歌', 'age': 19, 'score': 45, 'tel': 15000000003}
dict4 = {'name': '王隔壁', 'age': 20, 'score': 50, 'tel': 15000000004}
dict5 = {'name': '李旁边', 'age': 17, 'score': 70, 'tel': 15000000005}
dict6 = {'name': '黄大狗', 'age': 16, 'score': 88, 'tel': 15000000006}
student = [dict1, dict2, dict3, dict4, dict5, dict6]
for x in range(1, len(student)):
temp = student[x]
index = x
for y in range(x-1, -1, -1):
# 这里用temp['score'],不用student[x]['score'],因为student在变。
if temp['score'] > student[y]['score']:
student[y+1] = student[y]
index = y
student[index] = temp
for x in student:
print(x)
3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
print('选课学生共有%d人' % len(set(new_stu)))
b. 求只选了第一个学科的人的数量和对应的名字
English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
print('只选第一门课英语的人有:', end=' ')
count = 0
for index in range(len(English)):
if new_stu.count(new_stu[index]) == 1:
print(new_stu[index], end=' ')
count += 1
print()
print('只选第一门课(英语)共有%d个人' % count)
c. 求只选了一门学科的学生的数量和对应的名字\
English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
count = 0
print('只选一门学科的人有:', end=' ')
for item in new_stu:
if new_stu.count(item) == 1:
count += 1
print(item, end=' ')
print()
print('只选一门学科的共有%d人' % count)
d. 求只选了两门学科的学生的数量和对应的名字
English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
stu1 = []
for item in new_stu: # 统计选2门课的人存到new_stu
if new_stu.count(item) == 2:
stu1.append(item)
set1 = set(stu1) # 除去重复的名字
print('只选两门学科的人有:', end=' ')
for x in set1:
print(x, end=' ')
print()
print('只选两门学科的共有%d人' % (len(stu1)//2))
e. 求选了三门学生的学生的数量和对应的名字
English = ['王大', '刘二', '张三', '李五', '龙傲天']
Math = ['王大', '张三', '叶凡', '消炎', '李五']
Chinese = ['唐三', '大黄', '阿飞', '张三', '沈冷']
new_stu = English + Math + Chinese
stu1 = []
for item in new_stu: # 统计选3门课的人存到new_stu
if new_stu.count(item) == 3:
stu1.append(item)
set1 = set(stu1) # 除去重复的名字
print('选了三门学科的人有:', end=' ')
for x in set1:
print(x, end=' ')
print()
print('选了三门学科的共有%d人' % (len(stu1)//3))