You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何符合循环条件的数值68未被添加到字典对应键中?

问题:分数分类时数值68被代码忽略

我正在按分数区间对考试成绩进行分类,并将其添加到字典的对应键中,但代码完全忽略了数值68。

原代码

import numpy as np

exam_results = np.array(
    [
        42,  56,  59,  76,  43,  34,  62,  51,  50,  65,  
        66,  50,  46,  5,  79, 99,  51,  26,  35,   8,  
        34,  47,  64,  58,  61,  12,  30,  63,  20,  68
    ]
)

summarized_data = {'excellent': [],
                   'good': [],
                   'average': [],
                   'passable': [],
                   'failed': []
                  }

count = 0
for er in exam_results:
    count += 1
    if count < len(exam_results):
        if er >= 90:
            summarized_data["excellent"].append(int(er))
        elif 70 <= er <= 89:
            summarized_data["good"].append(int(er))
        elif 50 <= er <= 69:
            summarized_data["average"].append(int(er))
        elif 20 <= er <= 49:
            summarized_data["passable"].append(int(er))
        else:
            summarized_data["failed"].append(int(er))

for result in summarized_data:
    print(result, '-', summarized_data[result])

print(np.sort(exam_results))

运行结果

excellent - [99]
good - [76, 79]
average - [56, 59, 62, 51, 50, 65, 66, 50, 51, 64, 58, 61, 63]
passable - [42, 43, 34, 46, 26, 35, 34, 47, 30, 20]
failed - [5, 8, 12]
[ 5  8 12 20 26 30 34 34 35 42 43 46 47 50 50 51 51 56 58 59 61 62 63 64
 65 66 68 76 79 99]

预期结果(average键)

average - [56, 59, 62, 51, 50, 65, 66, 50, 51, 64, 58, 61, 63, 68]

问题原因

循环里的if count < len(exam_results)条件是核心问题:

  • 数组共有30个元素,len(exam_results)等于30
  • 遍历到最后一个元素(也就是68)时,count会递增到30,此时count < 30不成立,导致后续的分类逻辑完全没执行,68也就没被加入任何列表。

修复方案

直接删掉多余的count变量和错误的判断条件,遍历数组时不需要手动计数,直接处理每个元素即可:

import numpy as np

exam_results = np.array(
    [
        42,  56,  59,  76,  43,  34,  62,  51,  50,  65,  
        66,  50,  46,  5,  79, 99,  51,  26,  35,   8,  
        34,  47,  64,  58,  61,  12,  30,  63,  20,  68
    ]
)

summarized_data = {'excellent': [],
                   'good': [],
                   'average': [],
                   'passable': [],
                   'failed': []
                  }

for er in exam_results:
    if er >= 90:
        summarized_data["excellent"].append(int(er))
    elif 70 <= er <= 89:
        summarized_data["good"].append(int(er))
    elif 50 <= er <= 69:
        summarized_data["average"].append(int(er))
    elif 20 <= er <= 49:
        summarized_data["passable"].append(int(er))
    else:
        summarized_data["failed"].append(int(er))

for result in summarized_data:
    print(result, '-', summarized_data[result])

print(np.sort(exam_results))

修复后运行,average列表就会包含68,符合预期。

内容的提问来源于stack exchange,提问作者RicardoDLM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:53:17