首页 > 解决方案 > 试图在python中操作条形图的数据以获得测试成绩

问题描述

试图在 python 中操作条形图的数据以获取 x 轴的测试分数,我们有 0--100 % 步长 9 所以如果用户得分 4 它将在步骤 0 --9 中,如果另一个得分 3 它将计为2人在该步骤内得分。任何帮助实现这一点将不胜感激。谢谢

score = {"0 - 10": 0, "11 - 20": 0, "21 - 30": 0, "31 - 40": 0, "41 - 50": 0,
         "51 - 60": 0, "61 - 70": 0, "71 - 80": 0, "81 - 90": 0,
         "91 - 100": 0}

OUTCOMES = {}
for i in range(0, 10):
    OUTCOMES[i] = score["0 - 10"] = + 1
for i in range(11, 20):
    OUTCOMES[i] = score["11 - 20"] = + 1
for i in range(21, 30):
    OUTCOMES[i] = score["21 - 30"] = + 1
for i in range(31, 40):
    OUTCOMES[i] = score["31 - 40"] = + 1
for i in range(41, 50):
    OUTCOMES[i] = score["41 - 50"] = + 1
for i in range(51, 60):
    OUTCOMES[i] = score["51 - 60"] = + 1
for i in range(61, 70):
    OUTCOMES[i] = score["61 - 70"] = + 1
for i in range(71, 80):
    OUTCOMES[i] = score["71 - 80"] = + 1
for i in range(81, 90):
    OUTCOMES[i] = score["81 - 90"] = + 1
for i in range(91, 100):
    OUTCOMES[i] = score["91 - 100"] = + 1

标签: pythondjango

解决方案


默认情况下,任何键都将返回 0:

OUTCOMES = defaultdict(lambda: 0)
[... fill outcomes dict]

因此,当您增加 score dict 的值时,它不会在任何分数上失败:

for i in range(0, 10):
    score["0 - 10"] += OUTCOMES[i]

此外,您可以通过范围图简化表达式:

RANGES = {
    "0 - 10": range(10),
    "10 - 20": range(10, 20),
    ...
}

所以你的新表达可能是:

for rg in RANGES:
    rg_obj = RANGES[rg]
    score[rg] += sum([OUTCOMES[ix] for ix in rg_obj])

推荐阅读