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)
错误原因
代码里的条件判断写法完全错误:
course_cat in c == "MATH":course_cat已经是拆分出来的课程类别(比如"MATH"),直接判断course_cat == "MATH"即可,不需要加in c。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
相关产品推荐
相关产品推荐

