我已经有一段时间了,我被困住了。我必须编写一个程序,询问用户每个分数和平均测试分数。我需要函数calcAverage,它接受五个测试分数并返回分数的平均值。确定接受分数并根据标准分级等级将等级作为字符串返回的等级(90-100是A,80-89是B,70-79是C等)。但我还需要一个getValidScore函数,它会提示并读取一个有效的测试分数,一旦输入分数,它就会返回到调用模块。最后,isInValidScore是一个函数,用于检查传递的测试分数是否在0-100范围内,并返回一个布尔值,让我知道它是否有效。 这就是我所拥有的:
def main():
test1 = int(input('Enter test grade 1: '))
test2 = int(input('Enter test grade 2: '))
test3 = int(input('Enter test grade 3: '))
test4 = int(input('Enter test grade 4: '))
test5 = int(input('Enter test grade 5: '))
grade = (test1 + test2 + test3 + test4 + test5)
input('press enter to continue')
print(calc_average)
print(determine_grade)
print(getValidScore)
print(isInvalidScore)
return;
def calcAverage():
grade / 5
return averageScore
def determinGrade(score):
if grade >= 90 and grade <= 100:
return 'A'
elif grade >= 80 and grade <= 89:
return 'B'
elif grade >= 70 and grade <= 79:
return 'C'
elif grade >= 60 and grade <= 69:
return 'D'
else:
return 'F'
def getValidScore():
grade = int(input('input score'))isInvalidScore(score)
while isInvalidScore == false:
print('ERROR')
grade = int(input('input correct score'))
return score
def isInvalidScore(score):
status = True
if score < 0 or score > 100:
status = True
else: status = False
return status
main()
所以我添加了回报,当我运行程序时,我得到了这个:
输入测试成绩1:99
输入测试成绩2:88
输入测试成绩3:77
输入测试成绩4:66
输入测试成绩5:55
按Enter继续
函数calc_average位于0x02BAD228&gt;
函数determine_grade在0x02BAD270&gt;
函数getValidScore位于0x02BAD2B8&gt;
函数isInvalidScore at 0x02BAD300&gt;
答案 0 :(得分:1)
这里有一些问题:
getValidScore
并返回整数结果,而不是在未经验证的情况下读入输入(请参阅main
)。determinGrade
,isInvalidScore
)。calcAverage
)。return grade/5
)while
循环应以while isInvalidScore(grade)
开头,无需拨打前一行的电话。main
中,您正在调用未定义的函数(determine_grade
,这是一个错字吗?)这就是我能快速看到它的全部内容。祝你好运!
答案 1 :(得分:0)
来自@tdlive aw'sum的答案实际上非常好(我只是赞成它)。阅读他的评论并使用这些东西。我会为你提供一个校正实施..我希望你研究你不理解的方面,但从中拿走一些好的部分。祝你好运。
isValidScore = lambda n: 0 <= n <= 100
calcAverage = lambda *args: sum(args)/len(args)
determinGrade = lambda s: ['F', 'D', 'C', 'B', 'A'][max(0, (min(60, 99)/10)-5)]
def getValidScore():
while True:
try:
if isValidScore(int(raw_input('Input score: '))):
return score
except ValueError:
pass
print('Score has to be an integer in the range 0 to 100')
if __name__ == "__main__":
scores = []
for _ in range(5):
scores.append(getValidScore())
print('\nThe scores are: ' + str(scores))
print('The average is: ' + str(calcAverage(*scores)))
print('The grade is: ' + determinGrade(calcAverage(*scores)))