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)