Python逻辑问题:测试分数

时间:2015-08-13 21:15:24

标签: python testing logic

大家好我有点陷入逻辑问题。

标准是:

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

calc_average - 此功能应要求用户输入测试分数,直到没有更多分数输入,打印每个测试分数的字母等级,并返回所有测试分数的平均值。 determine_grade - 此函数应接受测试分数作为参数,并根据以下评分等级返回分数的字母等级:

分数表:

90 - 100 A. 80 - 89 B. 70-79 C 60 - 69 D. 低于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))

1 个答案:

答案 0 :(得分:2)

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

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. 如果您想检查条件并立即返回,则无需while。使用if(请参阅determine_grade
  3. 不接受c的输入会导致无限循环。固定的。