Python 逻辑问题:考试成绩

Python Logic Issue: Test Scores

大家好,我遇到了一个逻辑问题。

标准是:

编写一个程序,要求用户输入一些测试分数。该程序应显示每个分数的字母等级和平均考试分数。在程序中编写如下函数:

calc_average - 这个函数应该要求用户输入测试分数,直到没有更多的分数可以输入,打印每个测试分数的字母等级,以及 return 所有的平均值测试成绩。 determine_grade - 此函数应接受测试分数作为参数,return 分数的字母等级,基于以下评分标准:

分数等级:

90 - 100 安 80 - 89 乙 70 - 79 摄氏度 60 - 69 岁 华氏 60 以下

所以我的想法是我必须创建两个函数 calc_average 和 determine_grade。

问题是,通过在 calc_average() 之上设置 determine_grade(),一旦从 calc_average() 输入的分数不能传递到 determine_grade( ) 等字母等级无法确定并传回打印。所以这个问题看起来无法解决(至少如果按照说明去做的话)。

请帮我想办法。谢谢

到目前为止我的代码(尚未完成):

def determine_grade(grade):

    while 90 <= grade <= 100:
        g = "A"
    while 80 <= grade <= 89:
        g = "B"
    while 70 <= grade <= 79:
        g = "C"
    while 60 <= grade <= 69:
        g = "D"
    while grade < 60:
        g = "F"
    return g

def calc_average():

    c = "y"
    t = 0
    count = 0
    while c == "y" or c == "Y":
        s = float(input("Enter score: "))
        t +=s 
        count += 1
        g = determine_grade(s)
        print("Grade: " .format(g))
        avg = t/count
    return avg

a = calc_average()
print("Average: {0:.2f}" .format(a))

为什么不在两者之外设置循环和输入(实际上我放弃了平均,因为 运行 平均是危险的)?

def determine_grade(grade):    
    if 90 <= grade <= 100:
        return "A"
    if 80 <= grade <= 89:
        return "B"
    if 70 <= grade <= 79:
        return "C"
    if 60 <= grade <= 69:
        return "D"
    if grade < 60:
        return "F"
    return "error"

def main():
    grades = []
    cont = input("continue ('y')?")
    while cont == "y" or cont == "Y":
        grade = float(input("Enter score: "))
        print("Grade: " + determine_grade(grade))
        grades.append(grade)
        cont = input("continue ('y')?")
    print("Average: {0:.2f}" .format(sum(grades) / len(grades)))

更改:

  1. while 循环现在在函数之外。因此,您可以将主上下文中的任何内容传递给任何函数。
  2. 如果您想立即检查条件和 return,则不需要 while。使用 if(参见 determine_grade
  3. 不接受 c 的输入会导致无限循环。固定。