-
定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )
- 统计不及格学生的个数
- 打印不及格学生的名字和对应的成绩
- 统计未成年学生的个数
- 打印手机尾号是8的学生的名字
- 打印最高分和对应的学生的名字
- 删除性别不明的所有学生
- 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
students = [ {'姓名': '小明', '年龄': 20, '成绩': 80, '电话': '123456654328', '性别': '女'}, {'姓名': '小红花', '年龄': 17, '成绩': 40, '电话': '123456890321', '性别': '不明'}, {'姓名': '张三', '年龄': 22, '成绩': 30, '电话': '123456754092', '性别': '男'}, {'姓名': '李四', '年龄': 16, '成绩': 60, '电话': '123890223411', '性别': '男'}, {'姓名': '赵四', '年龄': 19, '成绩': 76, '电话': '123906654321', '性别': '男'}, {'姓名': '刘能', '年龄': 23, '成绩': 70, '电话': '123456904523', '性别': '不明'} ] # 1、统计不及格学生的个数 count = 0 for student in students: if student['成绩'] < 60: count += 1 print('成绩不及格的人数是:', count) print('-------------------------') # 2、打印不及格学生的名字和对应的成绩 for student in students: if student['成绩'] < 60: print(student['姓名'], student['成绩']) print('-------------------------') # 3、统计未成年学生的个数 count = 0 for student in students: if student['年龄'] < 18: count += 1 print('未成年的学生人数是:', count) print('-------------------------') # 4、打印手机尾号是8的学生的名字 for student in students: if int(student['电话']) % 10 == 8: print(student['姓名']) print('-------------------------') # 5、打印最高分和对应的学生的名字 max_score = students[0]['成绩'] names = [students[0]['姓名']] for stu in students[1:]: score = stu['成绩'] if score == max_score: names.append(stu['姓名']) elif score > max_score: max_score = score names.clear() names.append(stu['姓名']) print(names, max_score) print('--------------------------') # 6、删除性别不明的所有学生 for student in students: if student['性别'] == '不明': continue print(student) print('--------------------------') # 7、将列表按学生成绩从大到小排序 for i in range(len(students)): for j in range(len(students)-1-i): if students[j]['成绩'] < students[j+1]['成绩']: student = students[j] students[j] = students[j+1] students[j+1] = student print(students)
-
用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)
- 求选课学生总共有多少人
- 求只选了第一个学科的人的数量和对应的名字
- 求只选了一门学科的学生的数量和对应的名字
- 求只选了两门学科的学生的数量和对应的名字
- 求选了三门学生的学生的数量和对应的名字
Chinese = ('王芳', '小明', '张月', '李明') math = ('王芳', '夏雨', '张筱') English = ('张筱', 'Jack', '王芳', '李明') Courses = [Chinese, math, English] # 1、求选课学生总共有多少人 num = [] num1 = [] for course in Courses: for name in course: num.append(name) for name in num: if name not in num1: num1.append(name) print('总共有{}人参加了选课'.format(len(num1))) print('---------------------------') # 2、求只选了第一个学科的人的数量和对应的名字 name1 = [] for name in Courses[0]: if name not in Courses[1] and name not in Courses[2]: name1.append(name) print('只选修第一个学科的人数是:{}人,姓名是:{}'.format(len(name1), name1)) print('----------------------------') # 3、求只选了一门学科的学生的数量和对应的名字 student = [] for course in Courses: for name in course: student.append(name) d_stu = [] for name in student: if student.count(name) == 1: d_stu.append(name) print('只选修了一门课的总人数是:', len(d_stu)) print('名字是:', d_stu) print('---------------------------') # 4、求只选了两门学科的学生的数量和对应的名字 student = [] for course in Courses: for name in course: student.append(name) d_stu = [] for name in student: if student.count(name) == 2: d_stu.append(name) d1_stu = [] for name in d_stu: if name not in d1_stu: d1_stu.append(name) print('只选修了两门课的总人数是:', len(d1_stu)) print('名字是:', d1_stu) print('----------------------------') # 5、求选了三门学生的学生的数量和对应的名字 student = [] for course in Courses: for name in course: student.append(name) d_stu = [] for name in student: if student.count(name) == 3: d_stu.append(name) d1_stu = [] for name in d_stu: if name not in d1_stu: d1_stu.append(name) print('选修了三门课的总人数是:', len(d1_stu)) print('名字是:', d1_stu)
Python语言基础之元组和字典
1、元组
1)什么是元组
元组是容器型数据类型(序列),将()作为容器的标志里边有很多个元素,它们之间用逗号隔开:(元素1,元素2,元素3,......);
其中元素是任何类型的数据
特点:
元组是不可变的(不支持增删改):元组是有序的(支持下标操作)
2)元组就是不可变的列表
列表中除了和增、删、改相关的操作以外的操作元组都是支持的
例如:查、相关操作、相关方法(除了增删改相关的)、相关函数
t1 = (10, 20, 30, 40)
print(t2[-1]) - 40
print(t2[1:]) - (23, 30, 40)
元组不支持copy操作:因为不可变的数据在内存当中只保存一份,无法进行copy
3)元组特殊或者常用的操作
只有一个元素的元组:(元素,)
t1 = (10, )
print(t1, type(t1)) (10,)<class 'tuple'>
当元组中的元素在没有歧义的情况下可以省略()
直接用逗号将多个数据用逗号隔开也表示元组
同时使用多个变量获取元组的元素(列表也支持)
1》让变量的个数和元组中元素的个数保持一致
2》让变量的个数小于元组元素的个数,但是必须在某一个变量前加*
(具体做法是:元素先让不带* 的变量按照位置获取元素,剩下的部分全部保存到带*的变量对应的列表中)
2、字典
1)什么是字典
1)字典是容器型数据类型(序列),将{}作为容器的标志,里边多个键值对用逗号隔开。(键1:值1,键2:值2,键3:值3,......)
2)特征:
字典是可变的(支持增删改):
字典是无序的(不支持下标操作)
3)表达式解析:
元素 - 必须是键值对
键 - 必须是不可变的数据,例如:元组、数字、字符串。 并且在一个字典里边键是唯一的
值(才是真正想要保存的数据) - 是没有要求的
键值对:键:值
空字典的定义:
dict1 = {}
print(type(dict1)) - <class ‘dict’>
键是不可变的数据
dict1 = {'a': 10, 1: 20, [1, 2]: 30} - 列表是可变的数据类型,不能作为键否则就会报错
print(dict1) - TypeError: unhashable type: 'list'
键是唯一的
2)获取字典的值
1.查单个值
1)字典.[键] - 获取字典中指定键对应的值;当键不存在的时候会报错
2)字典.get(键)==字典.get(键,None) - 获取字典中指定键对应的值,当键不存在的时候不会报错,返回默认值None
3)字典.get(键,默认值) - 默认值可以自主定义,当所要查的键在给定字典中不存在的时候,就将定义的值打印出来
2.遍历
for 变量 in 字典:
循环体
注意:在这种遍历的条件下产生的结果是
给定字典的键
3)字典的增删改
1.增 - 添加键值对
2.改- 修改键对应的值
语法:字典[键] = 值 --- 当键存在的时候就是修改,当键不存在的时候就是添加
3.删
1)del 字典[键] - 删除字典中指定键对应的键值对(一对一对的删除)
2)字典.pop(键) - 取出字典中指定键对应的值