python-day7-作业

1.声明一个字典保存一个学生的信息,学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明)

student = {'name': '张三', 'age': 17, 'grade': 80, 'tel': 14854245, 'gender': '男'}
print(student)

2.声明一个列表,在列表中保存6个学生的信息(6个题1中的字典)

a.统计不及格学生的个数
b.打印不及格学生的名字和对应的成绩
c.统计未成年学生的个数
d.打印手机尾号是8的学生的名字
e.打印最高分和对应的学生的名字
f.将列表按学生成绩从大到小排序(挣扎一下,不行就放弃) 
g.删除性别不明的所有学生
all_student = [{'name': '张三', 'age': 17, 'grade': 80, 'tel': 14854245, 'gender': '男'},
               {'name': '李四', 'age': 16, 'grade': 40, 'tel': 15854231, 'gender': '男'},
               {'name': '王二', 'age': 16, 'grade': 30, 'tel': 14854333, 'gender': '男'},
               {'name': '黄玲', 'age': 17, 'grade': 90, 'tel': 14854348, 'gender': '女'},
               {'name': '张林', 'age': 16, 'grade': 50, 'tel': 14854241, 'gender': '不明'},
               {'name': '王可', 'age': 17, 'grade': 70, 'tel': 14854248, 'gender': '女'}]


# 统计不及格学生的个数
def student_fail(student_s):
    count = 0
    for student in student_s[:]:
        if student['grade'] < 60:
            count += 1
    print('不及格学生人数为:', count)
    print('=========================================================================')


# 打印不及格学生的名字和成绩
def print_fail(student_s):
    print('不及格学生的名字和成绩:')
    for student in student_s[:]:
        if student['grade'] < 60:
            print(student['name'], student['grade'])
    print('=========================================================================')


#  统计未成年学生的个数
def count_nonage(student_s):
    count = 0
    for student in student_s[:]:
        if student['age'] < 18:
            count += 1
    print('未成年学生人数为:', count)
    print('=========================================================================')


# 打印手机尾号是8的学生的名字
def count_tel(student_s):
    for student in student_s[:]:
        if int((str(student['tel']))[-1]) == 8:
            print(student['name'], '的手机尾号是8')
    print('=========================================================================')


# 打印最高分和对应的学生的名字
def great_grade(student_s):
    grade_high = 0
    n = -1
    for student in student_s[:]:
        if student['grade'] > grade_high:
            grade_high = student['grade']
    for student in student_s[:]:
        if grade_high == student['grade']:
            print(student['name']+'的成绩是', grade_high, '分,是最高分。')
    print('=========================================================================')


# 删除性别不明的所有学生
def del_student(student_s):
    count = -1
    s = 0
    for student in student_s[:]:
        count += 1
        if student['gender'] == '不明':
           s = count
    del student_s[s]
    for student in student_s:
        print(student)


# 将列表按学生成绩从大到小排序
def arranges(student_s):
    for index in range(len(student_s)):
        for index2 in range(index+1, len(student_s)):
            if student_s[index]['grade'] <= student_s[index2]['grade']:
                student_s[index], student_s[index2] = student_s[index2], student_s[index]

    for student in student_s:
        print(student)
    print('=========================================================================')
    # for x in range(len(student_s)):
    #     print(student_s[x]['grade'])


student_fail(all_student)
print_fail(all_student)
count_nonage(all_student)
count_tel(all_student)
great_grade(all_student)
arranges(all_student)
del_student(all_student)

3.用三个列表表示三门学科的选课学生姓名(一个学生可以同时选多门课)
a. 求选课学生总共有多少人
b. 求只选了第一个学科的人的数量和对应的名字
c. 求只选了一门学科的学生的数量和对应的名字
d. 求只选了两门学科的学生的数量和对应的名字
e. 求选了三门学生的学生的数量和对应的名字

class1 = {'小玲', '老王', '小李', '王城', '别书桓', '林云','李平'}
class2 = {'汪晓', '王城', '别书桓', '齐林', '飞奇', '林城'}
class3 = {'小玲', '老王', '小李', '王城', '别书桓', '齐林', '云飞', '林城', '赵三','孙二'}


# 求选课学生总共有多少人
def count_student(c1, c2, c3):
    c = c1 | c2 | c3
    print('参加选课的学生为:', len(c))
    print('=================================================================================')


# 求只选了第一个学科的人的数量和对应的名字
def first1_class(c1, c2, c3):
    c = c1 | c2 | c3
    c_1 = c2 | c3
    c_2 = c - c_1
    num = len(c_2)
    print('只选了第一个学科的人的数量:', num)
    print('只选了第一个学科的人为:')
    print(c_2)
    print('=================================================================================')


# 求只选了一门学科的学生的数量和对应的名字
def just1_class(c1, c2, c3):
    c = c1 | c2 | c3
    c_1 = c - (c2 | c3)
    c_2 = c - (c1 | c3)
    c_3 = c - (c1 | c2)
    num1 = len(c_1)
    num2 = len(c_2)
    num3 = len(c_3)
    print('只选了一个学科的人的数量:', num1+num2+num3)
    print('只选了一个学科的人为:')
    c_all = c_1 | c_2 | c_3
    print(c_all)
    print('=================================================================================')


# 求只选了两门学科的学生的数量和对应的名字
def just2_class(c1, c2, c3):
    c = c1 | c2 | c3
    _c1 = c2 & c3
    _c2 = c1 & c3
    _c3 = c1 & c3
    c_all = (_c1 | _c2 | _c3) - (c1 & c2 & c3)
    print('只选了两个学科的人的数量:', len(c_all))
    print('只选了两个学科的人为:')
    print(c_all)
    print('=================================================================================')


# 选了三门学科的学生的数量和对应的名字
def just3_class(c1, c2, c3):
    c = c1 & c2 & c3
    print('选了三个学科的学生的数量:', len(c))
    print('选了三门学科的学生为:')
    print(c)
    print('=================================================================================')
    

count_student(class1, class2, class3)
first1_class(class1, class2, class3)
just1_class(class1, class2, class3)
just2_class(class1, class2, class3)
just3_class(class1, class2, class3)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容