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

读取含姓名与成绩的文件,筛选超100%得分学生姓名的技术求助

解决读取学生成绩文件并筛选目标学生的问题

我来帮你梳理下问题,你的代码里有几个关键问题导致没法正常工作,咱们一步步修正:

先看代码里的核心问题

  • contents = original.readlines() 得到的是每行字符串组成的列表,你直接对整个列表调用split('\t')是无效的,得逐行单独处理
  • 制表符的写法错了,应该是\t而不是/t
  • 从文件里读出来的成绩是字符串类型,必须转换成整数(或浮点数)才能和数值做比较
  • 你写的y - 100 if y > 0逻辑不完整,而且变量y的指代也不清晰

修正后的完整代码

def TopStudents(n):
    top_students = []
    # 用with语句自动管理文件,避免忘记关闭导致资源泄漏
    with open(n, 'r') as original:
        for line in original:
            # 去掉每行首尾的空格、换行符,避免拆分出错
            cleaned_line = line.strip()
            # 跳过空行,处理无效内容
            if not cleaned_line:
                continue
            # 按制表符拆分姓名和成绩(注意是\t,不是/t)
            name, score_str = cleaned_line.split('\t')
            # 把成绩字符串转成整数(如果是小数成绩就用float)
            score = int(score_str)
            # 筛选得分超过100的学生(如果你的"超过100%"是其他逻辑,改这里的条件就行)
            if score > 100:
                top_students.append(name.strip())
    return top_students

代码逻辑解释

  1. 用with open(...)打开文件,无需手动关闭,更安全规范
  2. 逐行读取文件内容,先清理每行的多余空白字符和换行符
  3. 跳过空行,避免处理无效数据
  4. 用制表符拆分出姓名和成绩字符串,转换成绩为数值类型才能做比较
  5. 判断成绩是否符合要求,符合条件的学生姓名加入结果列表
  6. 最后返回所有符合条件的学生姓名列表

测试示例

假设你的文件内容是:

Wanda Barber	96
Peter Parker	105
Mary Jane	110
Tony Stark	99

调用TopStudents("your_file.txt")会返回['Peter Parker', 'Mary Jane']

如果你实际需求是其他筛选逻辑(比如计算与100的差值),只需要调整if score > 100这行的条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:24:16