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

如何从指定学生的课程列表中删除单个课程实例

仅删除指定学生的指定课程实现方案

核心思路

  1. 逐行读取文件内容,拆分出每个学生的ID和对应的课程列表
  2. 仅对匹配目标学生ID的行做修改:从其课程列表中移除指定课程
  3. 所有行(包括未修改的)重新写入文件,避免误删整行

Python 实现代码示例

假设你的studentDatabase.dat每行格式类似:1001 Math,English,Physics(学生ID和课程列表用空格分隔,课程间用逗号分隔),代码如下:

# 获取用户输入
target_student_id = input("请输入要修改的学生ID: ")
target_course = input("请输入要删除的课程代码: ")

# 读取并处理文件内容
processed_lines = []
with open("studentDatabase.dat", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        # 跳过空行
        if not line:
            processed_lines.append(line)
            continue
        
        # 拆分学生ID和课程列表(按第一个空格分割)
        line_parts = line.split(maxsplit=1)
        # 处理格式异常的行(比如没有课程列表的行)
        if len(line_parts) < 2:
            processed_lines.append(line)
            continue
        
        current_id, course_list_str = line_parts
        # 匹配到目标学生ID时处理课程列表
        if current_id == target_student_id:
            # 拆分课程为列表,去除每个课程前后的空格
            courses = [course.strip() for course in course_list_str.split(",")]
            # 移除指定课程
            updated_courses = [c for c in courses if c != target_course]
            # 重新拼接课程字符串
            updated_course_str = ",".join(updated_courses)
            # 生成新的行内容
            processed_lines.append(f"{current_id} {updated_course_str}")
        else:
            # 非目标学生的行直接保留
            processed_lines.append(line)

# 将处理后的内容写回原文件
with open("studentDatabase.dat", "w", encoding="utf-8") as f:
    f.write("\n".join(processed_lines))

注意事项

  • 请根据你实际的文件格式调整分隔符:比如如果学生ID和课程用冒号分隔,就把split(maxsplit=1)改成split(":", maxsplit=1);如果课程用分号分隔,就把split(",")改成split(";")
  • 操作前建议备份studentDatabase.dat,防止意外数据丢失
  • 可以额外添加判断逻辑:如果目标课程不在该学生的课程列表中,给用户打印提示信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:10:46