python - 试图在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
解决方案
默认情况下,任何键都将返回 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])
推荐阅读
- java - 没有为 Signature 对象选择 BouncyCastleProvider
- coq - 我可以使用 Axiom 命令定义一个等效项吗?
- java - 寻找制作硒刮片产品的解决方案
- python - 模拟或避免 pytest 的 cognito 身份验证和组权限
- ruby-on-rails - 在 Carrierwave 中的多个文件上传中使用数组索引作为拇指文件名
- typescript - 在 NGXS 中解码 SSL 并更新状态
- nginx - 基于当前位置的条件 proxy_pass
- vba - 可以使用 VBA/ADODB 记录集连接从 Access 存储查询中检索“输出”参数吗?
- python - __del__ 中的 pytest 异常
- javascript - 子元素改变父元素高度(css)