代码之家  ›  专栏  ›  技术社区  ›  laith maree

有没有一种方法可以在不出错的情况下将avg分数输入成绩函数

  •  0
  • laith maree  · 技术社区  · 1 年前

    我正在重新学习python,我决定制作一个学生成绩分析器程序,你可以在其中输入你的成绩,然后它会得到所有成绩的平均值,并转到我制作的成绩函数,检查哪些成绩。

    # Define Grades 
    def grades(score) :
        if score >= 90 and score <= 100:
            print('A')
        elif score >= 80 and score <= 89:
            print('B')
        elif score >= 70 and score <= 79:
            print('C')
        elif score >= 60 and score <= 69:
            print('D')
        else:
            print('F')
    
    def getAvg():
        grades_input = input('Type in your grades no commas ')
        grade_list = grades_input.split()
        scores = []
        i = 0
        for grade in grade_list:
            if ( i < len(grade_list)):
                scores.append(int(grade))
        avg = lambda x: sum(scores) / len(scores)
        return avg(scores)
    
    getAvg()
    grades(getAvg)
    

    我试着把get-avg函数放在里面 grades() 当我打电话的时候,我试着把分数放在里面 grades 没什么 getAvg() 该功能运行得很好,并为此感到自豪,没有使用艾,但我的经验是,用户输入了分数,比如说分数是 44 53 22 30 假设avg是 78 就像它会回到成绩功能并打印出“C”一样

    1 回复  |  直到 1 年前
        1
  •  0
  •   JayPeerachai    1 年前

    主要问题是,你没有正确地将平均分数传递给 grades 作用你需要打电话给 分数 函数的结果为 getAvg 功能如下:

    avg = getAvg()
    grades(avg)
    

    此外,你的 获取平均值 功能可以通过以下方式进一步优化

    def getAvg():
        grades_input = input('Type in your grades separated by spaces: ')
        grade_list = grades_input.split()
        scores = [int(grade) for grade in grade_list]  # Convert input to list of integers
        avg = sum(scores) / len(scores)  # Calculate average
        return avg