我正在开展一个学校项目,该项目必须将人员名称及其各自的分数存储在列表中的测试中,以便我可以对其进行操作以查找平均值以及使用他们的姓名打印每个人的分数。相对较新的Python,所以任何帮助表示赞赏:)
答案 0 :(得分:1)
我建议使用字典。这将键(学生的名字)与值(测试中的分数)配对。下面是一个示例,可以获得您想要的输出。
import math
student_scores = {}
student_scores['Rick'] = 89
student_scores['Pat'] = 79
student_scores['Larry'] = 82
score_list = []
for name, score in student_scores.items():
score_list.append(score)
print(name.title() + "'s score was: " + str(score) + '%')
sum_scores = sum(score_list)
division_scores = len(score_list)
average_score = sum_scores / division_scores
print('The average score was {0:.2f}%'.format(average_score))
我创建了一个空字典,您将用它将学生姓名和分数添加到列表中。所以在字典里(student_scores)学生名字' Rick'将是一个关键,得分89将是值。我为另外两名学生做了这个,将他们的名字与他们收到的分数配对。
我创建了一个名为score_list的空列表。您稍后将使用此列表添加所有分数的总和,并除以总分数以获得测试的平均分数。
我们启动一个for循环,遍历字典中的每个键和值。对于每个分数,我们将其附加到空分数列表中。对于每个姓名和分数,我们会打印一条消息,显示学生在测试中获得的内容。
现在我们已经将分数附加到字典中,我们可以使用sum方法来获得分数列表中所有分数的总和。我们将它放在一个名为sum_scores的变量中。我们还通过查找列表的长度来获得列表中的分数(在这种情况下,由于我在其中放入3个分数,因此将为3)。我们将它存储在一个名为division_scores的变量中(因为我将所有分数的总和除以记录的分数)。我们创建了一个名为average_score的变量,它是得分总和除以观察总数的结果。
然后我们打印使用.format()方法的平均分数。我们只是格式化平均分数,这样你就可以扩展两个小数位{0:.2f}%。
您的输出如下:
Rick's score was: 89%
Pat's score was: 79%
Larry's score was: 82%
The average score was 83.33%
答案 1 :(得分:1)
以上答案是配对字符串的一个很好的数据结构。在简单的情况下,它会让您在正确的轨道上列举得分,平均值等。
存储关系的另一种方法是使用类(或底部的元组!)下面是OOP方法的粗略草图。
最重要的部分是
ExamAttempt
类的属性存储信息(名称,分数)
在Exam.record_attempt
方法中,从ExamAttempt
类创建了一个新的ExamAttempt
对象,并将其添加到attempts
的{{1}}列表中对象。
从这里,您可以轻松添加其他功能。如果您全力以赴,您可能想要为Exam
和Question
以及Answer
对象建模。如果您存储问题和答案,以及每个学生选择的答案,您可以开始做一些事情,例如抛出问题,在曲线上评分,发现要丢弃的问题等.OOP方法可以更容易地扩展绘图等功能各种花式图,导出到CSV或Excel,等等。
并非所有下面的代码都是必要的......它绝对可以简化一点,或者完全重新想象,但希望这应该足以让你开始俯视这条路径。即使它现在看起来很复杂,也不是那么糟糕,而且它最终会是你想要做的事情(无论如何都要使用Python!)
Student