在Python中根据4个测试分数计算最终字母等级

0 投票
4 回答
29625 浏览
提问于 2025-04-20 18:58

我有一个问题,想知道如何根据四个参数来计算最终成绩。这四个参数是三次测试,每次占20%,还有一次期末考试,占40%。每个测试的分数范围是0到100分。这个函数应该很简单,只需要调用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

4 个回答

0

这个代码的意思是“一直重复做某件事”。

具体来说,"while True:" 是一个循环的开始,表示只要条件为真,就会一直执行下面的代码。因为这里的条件是“True”(真),所以这个循环会永远不停地运行下去,除非在里面有其他的代码来停止它。

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?")
1

我知道这个话题已经讨论很久了,但我想看看其他人是怎么处理这个问题的,同时也想分享一下我的解决方案。

首先,如果你有一个成绩列表,第一步是先计算出平均分。

# 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'
1

一些评论-

A. 在你的第二个函数中,你使用了变量“grade”... 这其实是个很好的提示,说明“grade”应该是这个函数的参数。你应该根据函数实际做的事情来给它命名... 在这个例子中,就是把数字成绩转换成字符串。

B. 你脚本的“主”部分(也就是你调用'print'的地方)有点不足。你不需要从这里访问函数内部的任何部分- 你只需要传入值,然后使用结果。像这样的

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

就是你需要的。你会注意到你没有在全局范围内访问任何私有变量- 你传入变量,然后在返回时使用返回值。

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

撰写回答