我正在尝试编写一个脚本,允许用户为棒球潜在客户提交字母等级,并根据用户提交的内容对这些成绩进行平均分析。
我相信我已经完成了第2步,但我对如何完成其余代码感到满意。
为简化起见,我们假设我们列出了5个潜在客户。用户将对每个人进行评分。当每个额外的用户添加他们的成绩输入时,应更新每个潜在客户的平均成绩并且他们的排名顺序同时排序。
prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5']
grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75} #grading system where A+ = 98, A = 95 etc
def numbergrade(lettergrade):
return grades[lettergrade] #function to convert lettergrade to numbergrade
如果每次有新的用户输入并且同时评级与正确的潜在客户匹配时,您将如何编译将添加元素的列表?我应该在这里使用字典吗?
答案 0 :(得分:0)
这将遍历列表中的每个潜在客户,要求评级并将评级添加到字典'out'。没有用户输入的验证,因此您可能希望确保他们输入了您成绩中的值。
当你想要在多个用户输入会话中平均值时会变得更加复杂,因为你需要持久数据,在这种情况下我会研究使用Pickle或数据库。 Anther选项是在一个会话中获取多个用户输入。
prospects = ['prospect1', 'prospect2', 'prospect3', 'prospect4', 'prospect5']
grades = {'A+':98, 'A':95, 'A-':92, 'B+':88, 'B':85, 'B-':82, 'C+':78, 'C':75}
out = {}
for prospect in prospects:
rating = raw_input('Rate prospect {0}'.format(prospect))
out[prospect] = grades[rating]
print out
答案 1 :(得分:0)
首先,如果您想在每次有新输入时更改平均值,您需要存储有多少评级。如果A +潜在客户获得F评级,则他们的新评级如果有1 A +评级或300,则会非常不同。
据我所知,你有两种存储选择。一种是使用元组列表,每个元组看起来像(prospect name, total rating, number of ratings)
。这样做的好处是您可以非常轻松地对其进行排序。缺点是查找特定玩家更难。另一个选项是字典,其中每个键都是潜在客户,每个值都是(total rating, number of ratings)
的元组。优点:查找特定玩家很容易。缺点:排序并没有多大意义。
最后,在任何一种情况下,我都会将当前评级存储为数字,而不是字母。这将使其在平均时更准确。列表中的第4步应该作为“整容”步骤完成;不修改潜在客户数据。我可以发布您喜欢的示例功能,但我现在正在打电话,所以如果我不需要,我就不会。