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

Python列表分类求助:课程列表拆分至upper/lower列表失败排查

课程分类代码问题修复

问题描述

我正在学习计算机科学1课程,仅掌握split()、count()、append()、列表等基础内容。遇到以下问题:

XYZ大学规定:

  • 数学(MATH)高阶课程编号≥300
  • 英语(ENG)高阶课程编号≥200
  • 心理学(PSYCH)高阶课程编号≥400

需要创建upper和lower两个列表,把classes列表里的每门课程分配到对应列表(高阶进upper,其余进lower)。我写了代码但没得到预期结果:

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]
# math classes >= 300 == upper
# english classes >= 200 == upper
# pscyh classes >= 400 == upper
upper = []
lower = []

for c in classes:
    course_cat = c.split()[0]
    course_number = int(c.split()[1])
    #print(course_cat)
    #print(course_number)
    if course_cat in c == "MATH":
        if course_number in c >= 300:
                upper.append(c)
        else:
                lower.append(c)
    elif course_cat in c == "ENG":
        if course_number in c >= 200:
                upper.append(c)
        else:
            lower.append(c)
    elif course_cat in c == "PSYCH":
        if course_number in c >= 400:
            upper.append(c)
        else:
            lower.append(c)
                
print(upper)
print(lower)

错误原因

代码里的条件判断写法完全错误:

  1. course_cat in c == "MATH":course_cat已经是拆分出来的课程类别(比如"MATH"),直接判断course_cat == "MATH"即可,不需要加in c。
  2. course_number in c >= 300:course_number已经转成整数了,直接判断course_number >= 300就行,in c完全多余,还会导致逻辑错误。

修正后的代码

classes = ["MATH 150", "PSYCH 111", "PSYCH 313", "PSYCH 412", "MATH 300", "MATH 404", "MATH 206", "ENG 100", "ENG 103", "ENG 201", "PSYCH 508", "ENG 220", "ENG 125", "ENG 124"]
upper = []
lower = []

for c in classes:
    # 拆分课程类别和编号,将编号转成整数
    course_cat = c.split()[0]
    course_number = int(c.split()[1])
    
    # 按课程类别判断是否属于高阶
    if course_cat == "MATH":
        if course_number >= 300:
            upper.append(c)
        else:
            lower.append(c)
    elif course_cat == "ENG":
        if course_number >= 200:
            upper.append(c)
        else:
            lower.append(c)
    elif course_cat == "PSYCH":
        if course_number >= 400:
            upper.append(c)
        else:
            lower.append(c)
                
print(upper)
print(lower)

运行结果

upper列表结果:['PSYCH 412', 'MATH 300', 'MATH 404', 'ENG 201', 'PSYCH 508', 'ENG 220']
lower列表结果:['MATH 150', 'PSYCH 111', 'PSYCH 313', 'MATH 206', 'ENG 100', 'ENG 103', 'ENG 125', 'ENG 124']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:27