-
定义一个变量保存一个学生的信息,学生信心中包括:姓名、年龄、成绩(单科)、电话、性别
stu_001 = {'name': 'Ajax', 'age': 18, 'grade(math)': 100, 'tel': '110', 'gender': 'male'} -
定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )
-
统计不及格学生的个数
-
打印不及格未成年学生的名字和对应的成绩
-
求所有男生的平均年龄
-
打印手机尾号是8的学生的名字
-
打印最高分和对应的学生的名字
-
删除性别不明的所有学生
-
将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
# 先创建学生信息 students = [ {'name': 'Ajax', 'age': 18, 'grade(math)': 100, 'tel': '11131230', 'gender': 'male'}, {'name': 'Bjax', 'age': 17, 'grade(math)': 40, 'tel': '11124410', 'gender': 'male'}, {'name': 'Cjax', 'age': 29, 'grade(math)': 30, 'tel': '11836310', 'gender': 'female'}, # 这个数学-20分的人是扣书写分扣的 {'name': 'Djax', 'age': 10, 'grade(math)': -20, 'tel': '11283620', 'gender': 'female'}, {'name': 'Ejax', 'age': 11, 'grade(math)': 98, 'tel': '11381750'}, {'name': 'Fjax', 'age': 16, 'grade(math)': 88, 'tel': '11183640', 'gender': 'male'}, ] # 1. 统计不及格学生的个数 count_1 = 0 for stu in students: if stu['grade(math)'] < 60: count_1 += 1 print('数学不及格学生人数是:', count_1) # 2. 打印不及格未成年学生的名字和对应的成绩 # 用count_2统计目标学生人数 count_2 = 0 # 开始遍历 for stu in students: # 如果找到了目标学生,就输出姓名和分数且人数+1 if stu['grade(math)'] < 60 and stu['age'] < 18: count_2 += 1 print(stu['name'], stu['grade(math)']) # 如果人数为0,就输出没有这样的学生 if not count_2: print('没有这样的学生') # 3. 求所有男生的平均年龄 sum_boys = count_boys = 0 for stu in students: if stu.get('gender') == 'male': count_boys += 1 sum_boys += stu['age'] print(sum_boys // count_boys) # 4. 打印手机尾号是8的学生的名字 # 用count_tel统计尾号8的人数 count_tel = 0 # 开始遍历 for stu in students: # 如果尾号是8,输出名字,人数+1 if int(stu['tel']) % 10 == 8: print(stu['name']) count_tel += 1 # 循环完后,如果人数还是0,就输出没有这样的学生 if not count_tel: print('没有这样的学生') # 5. grade_max = students[0]['grade(math)'] name_max = [students[0]['name']] for stu in students[1::]: if stu['grade(math)'] > grade_max: grade_max = stu['grade(math)'] name_max.clear() name_max.append(stu['name']) elif stu['grade(math)'] == grade_max: name_max.append(stu['name']) print(name_max, grade_max) # 6. for stu in students[:]: if not stu.get('gender'): students.remove(stu) print(students) # 7. # 方法零:由远古版本最强最恶の凶兽sort涅槃重生而来 # 向seikai昭示着自己不可动摇的王者地位!!!!!!! # Kneel in front of him!!!!! students.sort(reverse=True, key=lambda x: x['grade(math)']) print(students) # 方法1:冒泡排序法 n = len(students) for x in range(n - 1): for index_stu in range(n - x - 1): if students[index_stu]['grade(math)'] < students[index_stu + 1]['grade(math)']: students[index_stu], students[index_stu + 1] = students[index_stu + 1], students[index_stu] print(students) # 方法2:中世纪版本的时代的眼泪(┬_┬) # 思路是每次遍历找出最高分的字典并放到前面 # x表示选到第几名了(准确来说是x+1) # 由于最后剩的那个人肯定是最后一名,所以循环次数是长度-1 for x in range(len(students) - 1): max_grade = students[x]['grade(math)'] max_grade_stu = students[x] index_max_grade_stu = x for stu_other in students[x + 1::]: index_max_grade_stu += 1 if stu_other['grade(math)'] > max_grade: max_grade = stu_other['grade(math)'] max_grade_stu = stu_other temp = students.pop(index_max_grade_stu) students.insert(x, temp) print(students) # 方法3:远古版本的时代的眼泪(┬_┬) # 提取出每个人的成绩 grades = [stu['grade(math)'] for stu in students] # 使用我们有且仅有的最强最恶の排序工具sort,此时分数就排好序了 # 即现在分数的顺序,就是之后学生应该有的顺序 grades.sort(reverse=True) # 设置一个记录下标的变量 index_grade = 0 # 遍历grades列表中的分数,即从高到低遍历一遍分数 # 每取到一个分数,就遍历students列表中的元素 # 如果找到与grades中分数匹配的人 # 把他的信息取出来 # 重新插入到students中与grades中分数的下标一样的位置 # 每完成一次循环,下标+1,即第一名找完了找第二名,以此类推 for grade_single in grades: for x in range(len(students)): if grade_single == students[x]['grade(math)']: temp = students.pop(x) students.insert(index_grade, temp) index_grade += 1 print(students)
-
笑死,根本不知道冒泡排序法这种东西
-
定义一个变量保存一个班级的信息,班级信息中包括:班级名称、教室位置、班主任信息、讲师信息、班级所有的学生(根据实际情况确定数据类型和具体信息)
# 这是一份班级信息 class_message = { 'name': 'Cute', 'location': 'XiChuan_middle_school', 'head_teacher': {'name': 'MrsXu', 'tel': '12447372'}, 'lecturer': {'name': 'MrHua', 'tel': '1391237128'}, 'students': [ {'name': 'cutie1', 'gender': 'male', 'linkman': {'name': 'big_cutie1', 'tel': '121238'}}, {'name': 'cutie2', 'gender': 'female', 'linkman': {'name': 'big_cutie2', 'tel': '121248'}}, {'name': 'cutie3', 'gender': 'male', 'linkman': {'name': 'big_cutie3', 'tel': '128665'}}, {'name': 'cutie4', 'gender': 'male', 'linkman': {'name': 'big_cutie4', 'tel': '127798'}}, {'name': 'cutie5', 'gender': 'female', 'linkman': {'name': 'big_cutie5', 'tel': '120878'}} ] } -
已知一个列表保存了多个狗对应的字典:
dogs = [ {'name': '贝贝', 'color': '白色', 'breed': '银狐', 'age': 3, 'gender': '母'}, {'name': '花花', 'color': '灰色', 'breed': '法斗', 'age': 2}, {'name': '财财', 'color': '黑色', 'breed': '土狗', 'age': 5, 'gender': '公'}, {'name': '包子', 'color': '黄色', 'breed': '哈士奇', 'age': 1}, {'name': '可乐', 'color': '白色', 'breed': '银狐', 'age': 2}, {'name': '旺财', 'color': '黄色', 'breed': '土狗', 'age': 2, 'gender': '母'} ]-
利用列表推导式获取所有狗的品种
[‘银狐’, ‘法斗’, ‘土狗’, ‘哈士奇’, ‘银狐’, ‘土狗’]
# 这是一个获取狗品种的程序 print([dog.get('breed', '这只狗不知道品种') for dog in dogs]) -
利用列表推导式获取所有白色狗的名字
[‘贝贝’, ‘可乐’]
# 这是一个获取白狗名字的程序 white_dogs = [dog['name'] for dog in dogs if dog['color'] == '白色'] if white_dogs: print(white_dogs) else: print('没有白色狗') -
给dogs中没有性别的狗添加性别为 ‘公’
# 这是一个将未知性别的狗定为公狗的程序 for dog in dogs: dog.setdefault('gender', '公') -
统计 ‘银狐’ 的数量
# 这是一个统计银狐数量的程序 count_silver_fox = 0 for dog in dogs: if dog.get('breed') == '银狐': count_silver_fox += 1 print(count_silver_fox)
-
这段代码展示了如何在Python中处理学生信息,包括统计不及格学生、查找特定条件的学生、排序等操作,并给出了班级信息和狗狗数据的处理示例,如获取狗的品种、颜色等信息。
632

被折叠的 条评论
为什么被折叠?



