函数定义相关问题,初学者

现有100个学生成绩,成绩为整数(0- 100),利用函数方式来实现,函数划分如下。1、定义函数getscorelist,随机数产生100个整数(0- 100),放入- -个列表中,返回该列表2、定义函数chargescore,把一个百分制成绩转换成五级制成绩(优秀、良好、 中等、及格、不及格)并返回该五级制成绩

3、定义函数grade_ count, 统计百分制成绩列表中各等级的人数,存入字典中并返回4、定义函数display输出统计结果。
定义函数太多,不会调用了

def getscorelist(n):
    import random
    return random.sample(range(n+1),100)

def chargescore(score):
    if score >= 90:
        return '优秀'
    elif score >= 80:
        return '良好'
    elif score >= 70:
        return '中等'
    elif score >=60:
        return '及格'
    else:
        return '不及格'

def grade_count(scorelist):
    chargelist = [chargescore(i) for i in scorelist]
    return {i:chargelist.count(i) for i in chargelist}

def output(count):
    for key,value in count.items():
        print(key + ':' + str(value))

output(grade_count(getscorelist(100)))

import random

"""现有100个学生成绩,成绩为整数(0- 100),利用函数方式来实现,函数划分如下。
1、定义函数 getscorelist,随机数产生100个整数(0- 100),放入- -个列表中,返回该列表
2、定义函数 chargescore,把一个百分制成绩转换成五级制成绩(优秀,良好, 中等,及格,不及格)并返回该五级制成绩
3、定义函数 grade_count, 统计百分制成绩列表中各等级的人数,存入字典中并返回
4、定义函数 display输出统计结果。
"""

def getscorelist()->list:
    return random.sample(range(101), k=100)


def chargescore(score: int)->str:
    if score < 60:
        return "不及格"
    elif score >= 60 and score < 70:
        return "及格"
    elif score >= 70 and score < 80:
        return "中等"
    elif score >= 80 and score < 90:
        return "良好"
    else:
        return "优秀"


def grade_count(scores: list)->dict:

    five_level_students = {"优秀": 0, "良好": 0, "中等": 0, "及格": 0, "不及格": 0}

    for score in scores:
        # print(score, chargescore(score))
        five_level_students[chargescore(score)] += 1

    return five_level_students


def display():
    scores = sorted(getscorelist())

    return f"学生成绩等级数量: {grade_count(scores)},\n成绩列表明细: {scores}"


if __name__ == "__main__":

    print(display())

示例

学生成绩等级数量: {'优秀': 10, '良好': 10, '中等': 10, '及格': 10, '不及格': 60},
成绩列表明细: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100]