0

我正在尝试编写一个脚本,允许用户提交棒球前景的字母成绩,并根据用户提交的内容对这些成绩进行平均。

  1. 潜在客户的用户输入等级(潜在客户 1 的 B+)
  2. 所有输入都从字母等级转换为数字等级,以便对其进行平均。
  3. 前景按最高到最低等级排序。
  4. 成绩被重新转换回字母成绩。

我相信我已经涵盖了第 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

你将如何编译一个列表,每次有新的用户输入时都会添加一个元素,同时让成绩与正确的潜在客户匹配?我应该在这里使用字典吗?

4

2 回答 2

0

这将遍历列表中的每个潜在客户,要求评分并将评分添加到字典“out”中。没有验证用户输入,因此您可能希望确保他们输入的值符合您的成绩。

当您想要跨多个用户输入会话取平均值时,它会变得更加复杂,因为您需要持久数据,在这种情况下,我会考虑使用 Pickle 或数据库。另一种选择是在一个会话中接受多个用户输入。

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
于 2013-01-08T05:19:00.560 回答
0

首先,如果要在每次有新输入时更改平均值,则需要存储有多少个评分。如果 A+ 潜在客户获得 F 评级,如果他们有 1 个 A+ 评级或 300 分,他们的新评级将大不相同。

据我所知,您有两种存储选择。一种是使用元组列表,其中每个看起来像(prospect name, total rating, number of ratings). 这样做的好处是您可以很容易地按评级对其进行排序。缺点是查找特定玩家更难。另一个选项是字典,其中每个键是一个前景,每个值是一个(total rating, number of ratings). 优点:查找特定玩家很容易。缺点:排序并没有真正的意义。

最后,无论哪种情况,我都会将当前评分存储为数字,而不是字母。这将使其在平均时更加准确。清单上的第 4 步应作为“美容”步骤完成;不修改潜在客户数据。我可以发布您想要的示例功能,但我现在正在打电话,所以如果我不需要,我不会。

于 2013-01-08T05:34:56.533 回答