Python计算字母等级

时间:2018-03-22 20:20:04

标签: python if-statement

我无法获得字母等级输出除了F之外的任何输入值的任何值。任何人都可以找出问题所在。可能是我的if语句中的内容不正确但我不确定这是否属实。

score1=float(input("Enter score 1: "))
score2=float(input("Enter score 2: "))
score3=float(input("Enter score 3: "))
score4=float(input("Enter score 4: "))
score5=float(input("Enter score 5: "))
scores=[score1, score2, score3, score4, score5]

def determine_grade(scores):

    if score >=90:
        return 'A'
    elif score >=80:
        return 'B'
    elif score >=70:
        return "C"
    elif score >=60:
        return "D"
    elif score <60:
        return "F"

determine_grade(scores)

print("scores \t numeric grade \t letter grade") 
print("-------------------------------------------------------------") 
print("Score 1: ","\t", score1,"\t", determine_grade(score1))
print("Score 2: ","\t", score2,"\t", determine_grade(score2))
print("Score 3: ","\t", score3,"\t", determine_grade(score3))
print("Score 4: ","\t", score4,"\t", determine_grade(score4))
print("Score 5: ","\t", score5,"\t", determine_grade(score5))
print("-------------------------------------------------------------")
calc_average= sum(scores)/len(scores)
print("Average Score: {0:.2f}".format(calc_average))

4 个答案:

答案 0 :(得分:1)

首先,函数determine_grade()期待float参数;但是你传递了一个浮动列表scores

其次,在函数determine_grade()中,参数scoresscore之间存在不匹配。

此外,代码可以更清晰的方式编写:

num_scores = 5
scores = []
for i in range(num_scores):
    score = float(input("Enter score {}: ".format(i)))
    scores.append(score)


def determine_grade(scores):
    if score >= 90:
        return 'A'
    elif score >= 80:
        return 'B'
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    elif score < 60:
        return "F"


print("scores\tnumeric grade\tletter grade")
print('-' * 40)
for i in range(num_scores):
    print("Score {}:\t{}\t{}".format(i, scores[i], determine_grade(scores[i])))
print('-' * 40)
calc_average = sum(scores) / len(scores)
print("Average Score: {0:.2f}".format(calc_average))

答案 1 :(得分:0)

你应该说明问题是什么以及输出是什么样的。话虽如此,从快速浏览一下,我认为这是你的问题。

def determine_grade(scores):

    if score >=90:
        return 'A'
    elif score >=80:

在您的determine_grade功能中,您正在通过&#39;分数&#39;但在其中你正在检查变量&#39;得分&#39;这会引发一个未定义的&#34;错误。

你也不需要这条线。您并未真正使用返回值。

determine_grade(scores)

答案 2 :(得分:0)

除了hikerjobs指出的问题,行

determine_grade(scores)

不会按照您的意愿执行操作,因为在该范围内,scores是一个列表,因为该行:

scores=[score1,score2,score3,score4,score5]

但是你的determine_grade函数需要浮点数。

(在这方面,我建议您养成为代码编写文档字符串的习惯。这将有助于捕获大量简单错误。)

答案 3 :(得分:0)

怎么样?

成绩= {60:'D',70:'C',80:'B',90:'A',100:'A'}

myscore = 72

print(grades.get(int(myscore / 10)* 10,'F'))