python语言基础+课后练习day07

  1. 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )

    1. 统计不及格学生的个数
    2. 打印不及格学生的名字和对应的成绩
    3. 统计未成年学生的个数
    4. 打印手机尾号是8的学生的名字
    5. 打印最高分和对应的学生的名字
    6. 删除性别不明的所有学生
    7. 将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)
    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)
    
  2. 用三个元组表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    1. 求选课学生总共有多少人
    2. 求只选了第一个学科的人的数量和对应的名字
    3. 求只选了一门学科的学生的数量和对应的名字
    4. 求只选了两门学科的学生的数量和对应的名字
    5. 求选了三门学生的学生的数量和对应的名字
    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语言基础+课后练习day07_第1张图片

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》让变量的个数小于元组元素的个数,但是必须在某一个变量前加*

(具体做法是:元素先让不带* 的变量按照位置获取元素,剩下的部分全部保存到带*的变量对应的列表中)
python语言基础+课后练习day07_第2张图片

2、字典

1)什么是字典

1)字典是容器型数据类型(序列),将{}作为容器的标志,里边多个键值对用逗号隔开。(键1:值1,键2:值2,键3:值3,......)
2)特征:
	字典是可变的(支持增删改):
	字典是无序的(不支持下标操作)
3)表达式解析:
元素   -    必须是键值对
键     -    必须是不可变的数据,例如:元组、数字、字符串。 并且在一个字典里边键是唯一的
值(才是真正想要保存的数据) -  是没有要求的

键值对:键:值

空字典的定义:

dict1 = {}

print(type(dict1)) -

键是不可变的数据

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(键)   -    取出字典中指定键对应的值

python语言基础+课后练习day07_第3张图片

你可能感兴趣的:(python语言基础,小白初学,python)