Lloyd = {
"name":"Lloyd",
"homework": [90,97,75,92],
"quizzes": [ 88,40,94],
"tests": [ 75,90]
}
Alice = {
"name":"Alice",
"homework": [100,92,98,100],
"quizzes": [82,83,91],
"tests": [89,97]
}
Tyler = {
"name":"Tyler",
"homework": [0,87,75,22],
"quizzes": [0,75,78],
"tests": [100,100]
}
def average(value):
avg=0
items = len(value)
for item in value:
avg +=item
return avg/items
def getAverage(dictin):
hw = average(dictin.get('homework'))
quiz = average(dictin.get('quizzes'))
tests = average(dictin.get('tests'))
weighted_average = hw*.1 + quiz*.3 + tests*.6
return weighted_average
def getLetterGrade(score):
if score >=90:
return "A"
elif score < 90 and score >= 80:
return "B"
elif score < 80 and score >= 70:
return "C"
elif score < 70 and score >= 60:
return "D"
elif score < 60:
return "F"
else:
return "No grades for you"
score = getAverage(Lloyd)
grade = getLetterGrade(score)
print grade
这很好,但我被告知,如果分数是89.5,它就行不通了。我也试过了,但我不知道问题出在哪里。任何错误都是受欢迎的。在
捕获可能在
average
函数中,在该函数中,您将一个整数(avg
)除以另一个整数(items
)。由于两个操作数都是整数,Python也将结果强制转换为整数,因此average
函数永远不会返回分数。在有许多可能的解决方案:
在除法之前,将其中一个操作数(}。
avg
或items
)转换为浮点;例如return float(avg)/items
,或{让
avg
从0.0开始,而不是从0开始-这确保avg
始终是一个浮点。在代码的开头添加
from __future__ import division
。这指示Python以python3.x的方式使用除法,并始终返回一个float。更新:另外,根据gingerbear先生的评论,您可以考虑在^{中对分数进行四舍五入。如果从}将其四舍五入到最接近的整数。在
math
模块导入ceil
和floor
函数,可以说ceil(score)
向上取整,floor(score)
将其向下取整,或{相关问题 更多 >
编程相关推荐