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

Python课程注册程序:列表元素校验与删除功能故障排查

问题修复:Python课程注册程序的删除校验与列表管理问题

原代码核心问题

  • 添加课程逻辑错误:用classes = course.split(",")直接覆盖原有选课列表,导致之前选的课程全部丢失,而非追加新课程。
  • 删除校验逻辑完全失效:
    • 错误地将removeClass赋值为空列表,直接破坏了待删除课程的输入值
    • 校验时用classGone.count(removeClass)检查空列表在待删除列表中的数量,完全偏离了「检查课程是否在选课列表中」的需求
  • 边界逻辑不合理:当选课数量等于5时直接终止循环,用户无法删除课程调整列表。

修正后的完整代码

condition = True
classes = []
print("Welcome to class registration!")

def printClasses():
    print("You are currently taking these courses: ")
    for idx, course in enumerate(classes, 1):
        print(idx, ".", course)

while condition:
    if len(classes) < 5:
        course_input = input("What course(s) would you like to take?: ").strip()
        # 处理多课程输入,自动过滤空值并统一格式
        new_courses = [c.strip().title() for c in course_input.split(",") if c.strip()]
        # 追加新课程,保留原有选课记录
        classes.extend(new_courses)
        # 确保选课数量不超过上限
        if len(classes) > 5:
            classes = classes[:5]
        printClasses()
    elif len(classes) >= 5:
        remove_input = input("Please select a class to remove: ").strip()
        remove_courses = [c.strip().title() for c in remove_input.split(",") if c.strip()]
        
        for course in remove_courses:
            if course in classes:
                classes.remove(course)
                print(f"Successfully removed {course}")
            else:
                print(f"Error: '{course}' is not in your course list.")
        
        printClasses()
        if len(classes) < 5:
            print("You can add more courses now.")
    
    # 提供主动退出选项
    choice = input("Enter 'quit' to exit, or press Enter to continue: ").strip().lower()
    if choice == "quit":
        condition = False

print("Thank you for using the class registration system!")

关键修改说明

  1. 添加逻辑修复:

    • 用classes.extend(new_courses)替代直接赋值,保留原有选课记录
    • 用列表推导式处理多课程输入,自动过滤空输入(比如连续逗号的情况)
    • 增加上限控制,避免一次添加超过5门课
  2. 删除校验修复:

    • 移除错误的空列表赋值语句
    • 用if course in classes直接校验课程是否存在,逻辑清晰准确
    • 为每个待删除课程单独反馈结果,提升用户体验
  3. 循环逻辑优化:

    • 调整边界判断为len(classes) >=5,覆盖选课数量等于5的场景,允许用户删除课程
    • 添加主动退出选项,让用户灵活控制程序结束时机
    • 用enumerate(classes, 1)简化课程列表打印代码,更简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:40:33