我正在制作一个python 3程序来计算3次考试的平均成绩和最终成绩(a、B、C、D、F(。每次"你的成绩"输出都是F。不管你的考试成绩是多少,成绩输出总是F。怎么了?
firstexam=0
secondexam=0
thirdexam=0
grade=0
finalgradeABC=0
firstexam = int(input('Enter your first exam: '))
secondexam = int(input('Enter your second exam: '))
thirdexam = int(input('Enter your third exam: '))
allthree =(firstexam + secondexam + thirdexam)
def average(allthree):
return allthree/3
def yourgrade(avg):
if 90 <= avg <= 100:
return 'A'
elif 80 <= avg <= 89:
return 'B'
elif 70 <= avg <= 79:
return 'C'
elif 60 <= grade <= 69:
return 'D'
else:
return 'F'
grades = allthree
finalgradeABC = yourgrade(grades)
avg = average(allthree)
print("Average grade is : " + str(avg))
print("You grade : " + str(finalgradeABC))
您的语句不正确。如果你输入三个33分,你会得到一个"A"。
功能问题是你没有取平均值:
allthree =(firstexam + secondexam + thirdexam)
试试正确的方程式:
allthree =(firstexam + secondexam + thirdexam) / 3
结构性问题是,你没有正确解释所有的情况:你的评分表中有差距(即89.5是F
(,而你的最后一句假设除了这些范围之外的任何东西都必须是不及格的分数。相反,请尝试:
elif: avg < 60:
return `F`
else:
return "bad input or logic error"
我假设你想要字母等级作为平均等级。如果是这种情况,那么在计算平均值后,应该在avg
上调用yourgrade()
,如下所示:
grades = allthree
avg = average(allthree)
finalgradeABC = yourgrade(avg)
将最后几行更改为以下内容-您设置了一个不错的平均函数,但在将值传递给yourgrade((函数之前忘记了使用它。
avg = average(allthree)
grades = avg
finalgradeABC = yourgrade(grades)