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

Python编写选课列表循环无限运行,满6个条目不触发删除提示如何修复?

Python选课列表程序bug修复方案

核心问题原因

  • 两个循环为串行执行逻辑,课程删除校验只会在用户输入Exit结束课程输入后才会触发,输入过程中哪怕课程超过5门也不会弹出提示,不符合需求
  • 输入课程的循环中会将Exit字符串也加入课程列表,导致列表出现无效条目
  • 删除课程的输入校验范围固定为1-6,当课程数量不足6门时会出现逻辑冲突

修复后完整代码

courseList = []
max_course = 5

while True:
    courses = input("请输入课程名称?(输入Exit结束输入) ")
    # 退出判断放在最前,避免将Exit加入列表
    if courses == "Exit":
        break
    # 先判断当前列表是否已经满员
    if len(courseList) >= max_course:
        print("课程列表最多容纳5门课程,请先删除一门已有课程:")
        # 打印当前课程列表,带序号
        for idx, course in enumerate(courseList, 1):
            print(f"{idx}. {course}")
        # 删除逻辑
        while True:
            try:
                x = int(input("请输入要删除的课程序号: "))
                if 1 <= x <= len(courseList):
                    courseList.pop(x-1)
                    print(f"已删除第{x}门课程,当前课程列表:{courseList}")
                    break
                else:
                    print(f"请输入1到{len(courseList)}之间的有效序号")
            except ValueError:
                print("请输入合法的数字序号")
    # 课程列表有空位,添加新课程
    courseList.append(courses)
    print(f"已添加课程:{courses},当前已选{len(courseList)}门课程")

# 最终输出选课结果
print("\n最终选课列表:")
for idx, course in enumerate(courseList, 1):
    print(f"{idx}. {course}")

关键修改说明

  • 调整执行逻辑,将满员校验放在输入课程的循环内部,每输入一门新课程前先判断列表是否满员,满员立刻触发删除流程,符合需求的触发时机
  • 把Exit的判断放在最前面,不会将无效的Exit字符串加入课程列表
  • 新增输入异常捕获,避免用户输入非数字内容导致程序崩溃
  • 删除的序号校验范围动态适配当前课程列表长度,不会出现逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:06