【问题标题】:Calculate final letter grade in Python given 4 test scores给定 4 个测试分数,在 Python 中计算最终字母成绩
【发布时间】:2014-09-10 02:08:48
【问题描述】:

我的问题是在 0 到 100 分的范围内,根据 4 个参数(3 个测试价值 20% 和 1 个最终测试价值 40%)问我关于最终成绩的问题。该函数应该像打印 finalGrade(test1, test2, test3, final) 一样简单,它将根据分数输出一个字母等级。我不需要让用户输入任何内容,但是一旦我弄清楚了这个基本代码,我就会进行实验。

这是我目前的代码:

def grader(testOne, testTwo, testThree, finalExam):
    first = testOne * .20
    second = testTwo * .20
    third = testThree * .20
    fourth = finalExam *.40
    finalGrade = first + second + third + fourth
    return finalGrade

def ?? (??):
    if grade >= 90 and <= 100:
        return("You received an A")

    elif grade >= 80 and < 90:
        return("You received a B")

    elif grade >= 70 and < 80:
        return("You received a C")

    elif grade >= 60 and < 70:
        return("You received a D")

    else grade < 60:
        return("Sorry, you received an F")

print(testOne, testTwo, testThree, finalExam) #will replace with values

【问题讨论】:

    标签: python function


    【解决方案1】:

    这个:

    def ?? (??):
        if grade >= 90 and <= 100:
            return("You received an A")
    
        elif grade >= 80 and < 90:
            return("You received a B")
    
        elif grade >= 70 and < 80:
            return("You received a C")
    
        elif grade >= 60 and < 70:
            return("You received a D")
    
        else grade < 60:
            return("Sorry, you received an F")
    

    应该是:

    def gradeScores(FinalGrade):
        if FinalGrade >= 90 and FinalGrade <= 100:
            return("You received an A")
    
        elif FinalGrade >= 80 and FinalGrade < 90:
            return("You received a B")
    
        elif FinalGrade >= 70 and FinalGrade < 80:
            return("You received a C")
    
        elif FinalGrade >= 60 and FinalGrade < 70:
            return("You received a D")
    
        else:
            return("Sorry, you received an F")
    

    还有:

    print(testOne, testTwo, testThree, finalExam) #will replace with values
    

    应该是:

    print(gradeScores(grader(testOne, testTwo, testThree, finalExam))) #will replace with values
    

    【讨论】:

    • grade &gt;= 90 and &lt;= 100 不是有效的 Python。您需要提及grade 两次或写90 &lt;= grade &lt;= 100
    • 我仍然收到“else FinalGrade
    • 欢迎您。很高兴我能回答你的问题。请选择我的答案作为正确的答案。
    • @Regina 如果它完全回答了您的问题,请单击我的答案旁边的检查。
    【解决方案2】:

    一些cmets-

    A.你的第二个函数,你使用变量“grade”......这是一个很好的线索,“grade”应该是函数的参数。您会尝试根据函数的实际作用来命名函数……在这种情况下,将数字等级转换为字符串。

    B.缺少脚本的“主要”部分(称为“打印”)。您不需要从这里实际访问函数的任何内部部分——您将值传入并使用结果。类似的东西

    grade1 = 90
    ...
    finalgrade = grader(grade1, grade2, grade3, grade4)
    result = translategrade(finalgrade)
    print(result)
    

    是您在那里寻找的东西。您会注意到您没有全局访问任何私有变量 - 您将变量传入,在输出时使用返回值。

    【讨论】:

      【解决方案3】:

      我知道这是一个旧线程,但想看看其他人如何处理这个问题并提供我自己的解决方案。

      首先,如果你有一个成绩列表,首先找到平均分。

      # GREADES = [85, 92, 96, 67, 73]
      def numerical_grade(grades):
          return (sum(grades) / float(len(grades))) / 100
      

      除以 10 得到 0 和 1 之间的浮点数。然后要得到字母等级,只需从等级列表中拉出一个索引,从 10 中减去等级。

      # GRADE = 0.75
      def letter_grade(grade):
          grades = 'ABCDFFFFFF'
          if grade > 0:
              return grades[10 - ceil(grade * 10)]
          else
              return 'F'
      

      【讨论】:

        【解决方案4】:

        当真时:

        print("What is your Score out of 80?")
        score = input()
        
        first = int(input("What was your mark:"))
        Marks = int(input("Enter what the test was out of :"))
        result = first / Marks * 100
        print(first ,"/" ,Marks, '*' ,100 ,"=" , result, "%" )
        
        
        
        
        
        if result > 90:
            print("You received an A*")
        
        elif result > 70 and 90 :
            print("You received a A")
        
        elif result > 60 and 70 :
            print("You received a B")
        
        elif result > 50 and 60 :
            print("You received a C")
        
        elif result < 50:   
            print("You received an D, and have Failed")
        
        
        ans = no
        input("Would you like to continue using the program?")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-19
          • 1970-01-01
          • 1970-01-01
          • 2016-05-27
          • 2021-04-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多