我有这个功能:
def findScore(g):
gLetter = ["A", "B", "C", "D", "F"]
gPoint = [4.0, 3.0, 2.0, 1.0, 0.0]
for i, v in enumerate(gLetter):
if v==g:
gp = gPoint[i]
return gp
我想取科目数,然后通过调用“findScore”获取每个科目的分数字母,然后再使用一个类似这样的函数返回GPA:
^{pr2}$注:
主题字母(a)列表“
findGPA()必须调用findScore()将每个分数字母转换为分数点。
什么是功能体?在
我希望输出应该是:
>>> findGPA(3, ['A', 'B', 'C'])
3.0
>>> findGPA(4, ['B', 'B', 'C', 'B'])
2.75
'''
findGPA
实际上并不像您所建议的那样需要它的第一个参数,因为您可以找到等级字母列表的长度。在您可以使用带列表理解的
findScore
函数计算每个年级的分数,然后用sum
函数求和。最后,用len
函数除以得分列表的长度。在可以这样做:
这样就可以得到所需的输出:
^{pr2}$实际上,您不需要两个函数,也可以完全删除} 函数。在
find_gpa
函数的第一个参数,并使用内置的^{如果您使用的是python3.4或更新版本,则可以使用statistics模块中的^{} 函数。在
演示:
^{pr2}$使用字典计算成绩,然后简单地查找传入列表中的每个年级,除以分数的总和:
输出:
^{pr2}$就我个人而言,我会在一个单一的函数中完成这一切,只需要一张成绩表,你就可以从传递的列表中得到科目的数量,所以num不是真正需要的。在
dict是最有效的查找方法,但是如果必须使用列表,那么可以使用与biect文档中的示例密切相关的逻辑:
(len(grds) or 1)
还将处理空列表:使用对分可以在
log(n)
时间内搜索排序结构,而不是潜在地查看每个元素。在相关问题 更多 >
编程相关推荐